标签:
Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 3319 Accepted Submission(s):
936
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #define N 1005 6 #define M 50005 7 #define INF 0x3f3f3f3f 8 using namespace std; 9 10 struct Edge 11 { 12 int from,to,val; 13 int next; 14 bool used; 15 } edge[M*2]; 16 17 int n,m,tol; 18 int head[M*2],dis[N]; 19 bool vis[N]; 20 int flag; 21 int path[N]; 22 23 void init() 24 { 25 tol=0; 26 flag=0; 27 memset(head,-1,sizeof(head)); 28 memset(path,-1,sizeof(path)); 29 } 30 31 void addEdge(int u,int v,int val) 32 { 33 edge[tol].from=u; 34 edge[tol].to=v; 35 edge[tol].val=val; 36 edge[tol].used=true; 37 edge[tol].next=head[u]; 38 head[u]=tol++; 39 edge[tol].from=v; 40 edge[tol].to=u; 41 edge[tol].val=val; 42 edge[tol].used=true; 43 edge[tol].next=head[v]; 44 head[v]=tol++; 45 } 46 47 void getmap() 48 { 49 scanf("%d%d",&n,&m); 50 int a,b,c; 51 while(m--) 52 { 53 scanf("%d%d%d",&a,&b,&c); 54 addEdge(a,b,c); 55 } 56 } 57 58 int spfa() 59 { 60 memset(dis,INF,sizeof(dis)); 61 memset(vis,false,sizeof(vis)); 62 queue<int>q; 63 q.push(1); 64 dis[1]=0; 65 vis[1]=true; 66 while(!q.empty()) 67 { 68 int u=q.front(); 69 q.pop(); 70 vis[u]=false; 71 for(int i=head[u]; i!=-1; i=edge[i].next) 72 { 73 int v=edge[i].to; 74 if(edge[i].used) 75 if(dis[v]>dis[u]+edge[i].val) 76 { 77 dis[v]=dis[u]+edge[i].val; 78 if(!flag) 79 path[v]=i; ///记录可以缩进的边,这些边可以改变总路程 80 if(!vis[v]) 81 { 82 vis[v]=true; 83 q.push(v); 84 } 85 } 86 } 87 } 88 return dis[n]; 89 } 90 91 void newmap() 92 { 93 int i=n,j=-1; 94 int ans=-1; 95 while(path[i]!=-1) 96 { 97 j=path[i]; 98 edge[j].used=edge[j+1].used=false; 99 int tmp=spfa(); 100 edge[j].used=edge[j+1].used=true; 101 if(tmp>ans) 102 ans=tmp; 103 i=edge[j].from; 104 } 105 if(ans<INF) 106 printf("%d\n",ans); 107 else 108 printf("-1\n"); 109 } 110 111 int main() 112 { 113 int T; 114 scanf("%d",&T); 115 while(T--) 116 { 117 init(); 118 getmap(); 119 spfa(); 120 newmap(); 121 } 122 }
hdu 3986 Harry Potter and the Final Battle
标签:
原文地址:http://www.cnblogs.com/pshw/p/5744437.html