UVALive 6885 spfa
来源:互联网 发布:易建联巅峰赛季数据 编辑:程序博客网 时间:2024/05/06 07:52
#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<queue>using namespace std;const int inf=0x7fffffff;const int N=10000+5;int p,t,f1[N],f2[N],dis1[N],dis2[N];struct{ int u,v,c;}edge[250000+5];vector<int>g[10000+5];void spfa1(){ queue<int>q; int i,u,v,k; memset(f1,0,sizeof(f1)); for(i=0;i<p;i++) dis1[i]=inf; dis1[0]=0; q.push(0); while(!q.empty()) { u=q.front(); q.pop(); f1[u]=0; for(i=0;i<g[u].size();i++) { k=g[u][i]; if(edge[k].u==u) { v=edge[k].v; if(dis1[u]+edge[k].c<=dis1[v]) { dis1[v]=dis1[u]+edge[k].c; if(f1[v]==0) { f1[v]=1; q.push(v); } } } else if(edge[k].v==u) { v=edge[k].u; if(dis1[u]+edge[k].c<=dis1[v]) { dis1[v]=dis1[u]+edge[k].c; if(f1[v]==0) { f1[v]=1; q.push(v); } } } } }}void spfa2(){ queue<int>q; int i,u,v,k; memset(f2,0,sizeof(f2)); for(i=0;i<p;i++) dis2[i]=inf; dis2[p-1]=0; q.push(p-1); while(!q.empty()) { u=q.front();q.pop(); f2[u]=0; for(i=0;i<g[u].size();i++) { k=g[u][i]; if(edge[k].u==u) { v=edge[k].v; if(dis2[u]+edge[k].c<=dis2[v]) { dis2[v]=dis2[u]+edge[k].c; if(f2[v]==0) { f2[v]=1; q.push(v); } } } else if(edge[k].v==u) { v=edge[k].u; if(dis2[u]+edge[k].c<=dis2[v]) { dis2[v]=dis2[u]+edge[k].c; if(f2[v]==0) { f2[v]=1; q.push(v); } } } } }}int main(){ int i,dis,ans,u,v,c; while(~scanf("%d%d",&p,&t)) { for(i=0;i<p;i++) g[i].clear(); for(i=0;i<t;i++) { scanf("%d%d%d",&u,&v,&c); edge[i].u=u; edge[i].v=v; edge[i].c=c; g[u].push_back(i); g[v].push_back(i); } spfa1(); spfa2(); dis=dis1[p-1]; ans=0; //for(i=0;i<p;i++) printf("%d ",dis1[i]); for(i=0;i<t;i++) { u=edge[i].u; v=edge[i].v; c=edge[i].c; if(dis1[u]+dis2[v]+c==dis||dis1[v]+dis2[u]+c==dis) ans+=c; } printf("%d\n",2*ans); } return 0;}
0 0
- UVALive 6885 spfa
- hdu2296||UVALive 4223 Trucking (二分+spfa)
- UVALive 6378 Friend Chains (多源最短路 spfa)
- ACM 图论 搜索 SPFA UVALive 5966 Blade and Sword
- UVALive - 4080 Warfare And Logistics (SPFA+最短路树)
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- postgreSQL格式化时间的函数详解
- pat 1097 Deduplication on a Linked List
- hdu 1142 A Walk Through the Forest spfa
- 例题5.3 项链 UVa10054
- iOS开发 代码重构心得
- UVALive 6885 spfa
- MFC 画标尺
- 键盘按键ASCII码值与ASCII表
- UI综合
- 安装SparkR
- USACO 2.2.3 Runaround Numbers
- Best Cow Line
- 【面试笔试】二叉树相关操作
- 个人对Fragment的一些理解