uva 10246(最短路变形)
2013-09-20 19:26
323 查看
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28972
思路:spfa求出每个点到其余顶点的最短路(最短路上的每个点的val都小于等于起点的val),然后又二维数组dp来保存,最后询问的时候就是枚举中间点i了,min{dp[i][u]+dp[i][v]+cost[i]};
View Code
思路:spfa求出每个点到其余顶点的最短路(最短路上的每个点的val都小于等于起点的val),然后又二维数组dp来保存,最后询问的时候就是枚举中间点i了,min{dp[i][u]+dp[i][v]+cost[i]};
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<vector> using namespace std; #define inf 1<<30 struct Edge{ int v,w; Edge(){} Edge(int vv,int ww):v(vv),w(ww){} }; vector<vector<Edge> >g; int cost[111],dist[111],dp[111][111]; bool mark[111]; int n,m,Q; void spfa(int s) { memset(mark,false,sizeof(mark)); fill(dist,dist+n+1,inf); dist[s]=0; queue<int>que; que.push(s); while(!que.empty()){ int u=que.front(); que.pop(); mark[u]=false; for(int i=0;i<g[u].size();i++){ int v=g[u][i].v,w=g[u][i].w; if(dist[u]+w<dist[v]&&cost[v]<=cost[s]){ dist[v]=dist[u]+w; if(!mark[v]){ mark[v]=true; que.push(v); } } } } for(int i=1;i<=n;i++)dp[s][i]=dist[i]; } int main() { int u,v,w,t=0; while(~scanf("%d%d%d",&n,&m,&Q)){ if(n==0&&m==0&&Q==0)break; for(int i=1;i<=n;i++)scanf("%d",&cost[i]); g.clear(); g.resize(n+2); while(m--){ scanf("%d%d%d",&u,&v,&w); g[u].push_back(Edge(v,w)); g[v].push_back(Edge(u,w)); } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)dp[i][j]=inf; for(int i=1;i<=n;i++)spfa(i); if(t)puts(""); printf("Case #%d\n",++t); while(Q--){ scanf("%d%d",&u,&v); int ans=inf; for(int i=1;i<=n;i++){ if(dp[i][u]==inf||dp[i][v]==inf)continue; ans=min(ans,dp[i][u]+dp[i][v]+cost[i]); } if(ans==inf)ans=-1; printf("%d\n",ans); } } return 0; }
View Code
相关文章推荐
- uva 10246(最短路变形)
- UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)
- UVA 10537 The Toll! Revisited(最短路变形)
- uva 10246 - Asterix and Obelix(最短路)
- Funny Car Racing UVA - 12661 --SPFA最短路变形
- uva 10246 最短路
- UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
- UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)
- UVA 4080 Warfare And Logistics 战争与物流 (最短路树,变形)
- UVA11280 最短路 + SPFA变形 + 单向链表存储边 + 结构体构造函数 + 鲁棒性
- CSU 1333 & Uva 12661 Funny Car Racing【最短路变形+spfa算法,链式前向星建图】
- UVA - 10537 The Toll! Revisited (最短路变形逆推)
- uva 10269 最短路变形
- UVa 10246 Asterix and Obelix(变形的最短路径)
- UVA 10537 The Toll! Revisited(最短路变形+输出字典序最小路径)
- UVA 10801 Lift Hopping 电梯换乘(最短路,变形)
- uva 10246(变形floyd)
- UVA 10246 - Asterix and Obelix(最短路)
- UVa10246 - Asterix and Obelix(最短路径变形)
- uva_10246_Asterix and Obelix(最短路)