HDOJ1874最短路【spfa】
生活随笔
收集整理的這篇文章主要介紹了
HDOJ1874最短路【spfa】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//不知道切過這道題目幾次了,這次又wa了...雙向路啊。。。。這波簡直無奈了,今晚又是浪成狗!!!!
#include<cstdio> #include<vector> #include<string.h> #include<iostream> #include<algorithm> using namespace std; #define INF 0X3f3f3f3f #define N 100010struct asd{int to;int w;int next; }; int head[N]; int tol; asd q[N]; int dis[220]; bool vis[220]; int n; int que[N*10]; void spfa(int s,int t) {for(int i=0;i<n;i++){dis[i]=INF;vis[i]=0;}dis[s]=0;vis[s]=1;int he,tail;he=0;tail=1;que[he]=s;while(he<tail){int u=que[he];vis[u]=0;for(int k=head[u];k!=-1;k=q[k].next){int i=q[k].to;if(dis[i]>dis[u]+q[k].w){dis[i]=dis[u]+q[k].w;if(!vis[i]){que[tail++]=i;vis[i]=1;}}}he++;}if(dis[t]!=INF){printf("%d\n",dis[t]);}elseputs("-1"); }void add(int a,int b,int c) {q[tol].to=b;q[tol].w=c;q[tol].next=head[a];head[a]=tol++; }int main() {int m;while(~scanf("%d%d",&n,&m)){int a,b,c;memset(head,-1,sizeof(head));tol=0;for(int i=0;i<m;i++){scanf("%d%d%d",&a,&b,&c);add(a,b,c);add(b,a,c);}int s,t;scanf("%d%d",&s,&t);spfa(s,t);}return 0; }
轉載于:https://www.cnblogs.com/keyboarder-zsq/p/5934589.html
總結
以上是生活随笔為你收集整理的HDOJ1874最短路【spfa】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100万并发连接服务器笔记之测试端就绪
- 下一篇: 【README2】动态规划之斐波那契数列