标签:
Description
Input
Output
Sample Input
Sample Output
1 # include<iostream> 2 # include<cstdio> 3 # include<cstring> 4 # include<queue> 5 # include<algorithm> 6 using namespace std; 7 const int N=1000000; 8 const long long INF=1<<30; 9 struct edge 10 { 11 int to,w,nxt; 12 }; 13 edge e[N+5]; 14 int n,cnt,head[N+5],a1[N+5],a2[N+5],c[N+5]; 15 long long dis[N+5]; 16 void add(int u,int v,int w) 17 { 18 e[cnt].to=v; 19 e[cnt].w=w; 20 e[cnt].nxt=head[u]; 21 head[u]=cnt++; 22 } 23 long long spfa() 24 { 25 fill(dis,dis+n+1,INF); 26 queue<int>q; 27 q.push(1); 28 dis[1]=0; 29 while(!q.empty()) 30 { 31 int u=q.front(); 32 q.pop(); 33 for(int i=head[u];i!=-1;i=e[i].nxt){ 34 if(dis[e[i].to]>dis[u]+e[i].w){ 35 dis[e[i].to]=dis[u]+e[i].w; 36 q.push(e[i].to); 37 } 38 } 39 } 40 long long res=0; 41 for(int i=1;i<=n;++i) 42 res+=dis[i]; 43 return res; 44 } 45 int main() 46 { 47 int T,m; 48 scanf("%d",&T); 49 while(T--) 50 { 51 cnt=0; 52 scanf("%d%d",&n,&m); 53 fill(head,head+n+1,-1); 54 for(int i=0;i<m;++i){ 55 scanf("%d%d%d",&a1[i],&a2[i],&c[i]); 56 add(a1[i],a2[i],c[i]); 57 } 58 long long ans=spfa(); 59 //cout<<ans<<endl; 60 cnt=0; 61 fill(head,head+n+1,-1); 62 for(int i=0;i<m;++i) 63 add(a2[i],a1[i],c[i]); 64 ans+=spfa(); 65 printf("%lld\n",ans); 66 } 67 return 0; 68 }
POJ-1511 Invitation Cards (双向单源最短路)
标签:
原文地址:http://www.cnblogs.com/20143605--pcx/p/4681895.html