hdu 1535 spfa
2014-04-08 21:12
357 查看
建个正向的图。
建个反向的图。
2遍spfa搞定。
建个反向的图。
2遍spfa搞定。
#include<cstdio> #include<iostream> #include<cstring> #include<queue> #include<algorithm> using namespace std; int p,q; const int inf=0x3f3f3f3f; struct node { int v,nxt; int w; }edge[1000005]; struct s{ int a,b,c; }record[1000005]; int nume,head[1000005]; int dis[1000005]; int inque[1000005]; void add(int u,int v,int w) { edge[nume].v=v;edge[nume].w=w;edge[nume].nxt=head[u]; head[u]=nume++; } int ans=0; void spfa(int src){ int i; queue<int >que; que.push(src); for(i=1;i<=p;i++) { dis[i]=inf; inque[i]=0; } dis[src]=0; inque[src]=1; while(!que.empty()){ int u=que.front(); que.pop(); inque[u]=0; for(i=head[u]; i!=-1 ; i=edge[i].nxt){ int v=edge[i].v; if(dis[u]+edge[i].w<dis[v]){ dis[v]=dis[u]+edge[i].w; if(!inque[v]){ que.push(v); inque[v]=1; } } } } } int main() { int t; scanf("%d",&t); while(scanf("%d%d",&p,&q)!=EOF){ int i; nume=0; memset(head,-1,sizeof(head)); for(i=0;i<q;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); record[i].a=a;record[i].b=b;record[i].c=c; add(a,b,c); } ans=0; spfa(1); for(i=2;i<=p;i++) ans+=dis[i]; nume=0; memset(head,-1,sizeof(head)); for(i=0;i<q;i++){ add(record[i].b,record[i].a,record[i].c); } spfa(1); for(i=2;i<=p;i++) ans+=dis[i]; printf("%d\n",ans); } }
相关文章推荐
- hdu 1535 Invitation Cards(邻接表spfa)
- hdu1535—Invitation Cards(spfa)
- hdu 1535 Invitation Cards(SPFA)
- HDU 1535 Invitation Cards 【SPFA + 链式前向星】
- hdu 1535 Invitation Cards 最短路spfa+逆向建图
- HDU 1535 Invitation Cards SPFA
- HDU 1535 Invitation Cards (spfa, 链式前向星,逆向建图)
- HDU 1535 Invitation Cards(有向图单源最短路径+SPFA)
- [HDU 1535]Invitation Cards[SPFA反向思维]
- HDU 1535 Invitation Cards(多源点到单源点,dijkstra/spfa)
- [HDU 1535]Invitation Cards[SPFA反向思维]
- hdu 1535 Invitation Cards 大年初一首A 一次正向SPFA+一次逆向SPFA
- hdu1535 spfa
- HDU1535~Invitation Cards(spfa+邻接表反转)
- HDU 1535 Invitation Cards(SPFA,及其优化)
- hdu 1535 Invitation Cards(spfa)
- hdu 1317+hdu 1535(SPFA)
- HDU 1535 Invitation Cards(SPFA+双向建图 )
- HDU 1535 Invitation Cards 有向图的来回最短路(邻接表反向建图)+spfa
- 【SPFA邻接表】HDU 1535 Invitation Cards