标签:des style blog class code java tar ext javascript width color
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 27591 | Accepted: 9303 |
Description
Input
Output
Sample Input
5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100
Sample Output
90
思路:spfa
1 #include<queue> 2 #include<cstdio> 3 #include<string> 4 #include<cstring> 5 #include<iostream> 6 #include<algorithm> 7 #define MAXN 2222 8 #define INF 0x7fffffff 9 using namespace std; 10 typedef struct{ 11 int to, next, w; 12 }Edge; 13 queue<int>Q; 14 Edge edge[2*MAXN]; 15 int head[MAXN/2], vis[MAXN/2], dist[MAXN/2], N, T; 16 void init(){ 17 memset(vis, 0, sizeof(vis)); 18 for(int i = 1;i < N;i ++) dist[i] = INF; 19 dist[N] = 0; 20 } 21 void addedge(int u, int v, int w, int k){ 22 edge[k].to = v; 23 edge[k].w = w; 24 edge[k].next = head[u]; 25 head[u] = k++; 26 edge[k].to = u; 27 edge[k].w = w; 28 edge[k].next = head[v]; 29 head[v]=k; 30 } 31 void spfa(int s){ 32 init(); 33 while(!Q.empty()) Q.pop(); 34 vis[s] = 1; 35 Q.push(s); 36 while(!Q.empty()){ 37 int p = Q.front(); 38 Q.pop(); 39 vis[p] = 0; 40 for(int i = head[p];~i;i = edge[i].next){ 41 int u = edge[i].to; 42 if(dist[u] > dist[p] + edge[i].w){ 43 dist[u] = dist[p] + edge[i].w; 44 if(!vis[u]){ 45 Q.push(u); 46 vis[u] = 1; 47 } 48 } 49 } 50 } 51 } 52 int main(){ 53 int u, v, w; 54 /* freopen("in.c", "r", stdin); */ 55 while(~scanf("%d%d", &T, &N)){ 56 int k = 0; 57 memset(head, -1, sizeof(head)); 58 for(int i = 0;i < T;i ++){ 59 scanf("%d%d%d", &u, &v, &w); 60 addedge(u, v, w, k); 61 k += 2; 62 } 63 spfa(N); 64 printf("%d\n", dist[1]); 65 } 66 return 0; 67 }
标签:des style blog class code java tar ext javascript width color
原文地址:http://www.cnblogs.com/anhuizhiye/p/3700726.html