深夜补最短路!
Posted dragondragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深夜补最短路!相关的知识,希望对你有一定的参考价值。
嘻嘻!
https://cn.vjudge.net/contest/323530#problem/A
show the code:
#include<cstdio> #include<cstring> #include<algorithm> #define maxn 1005 using namespace std; const int inf=0x3f3f3f3f; int dis[maxn],vis[maxn]; int mp[maxn][maxn]; int n; void init() for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i==j) mp[i][j]=0; else mp[i][j]=inf; int djs(int st,int ed) for(int i=1;i<=n;i++) dis[i]=mp[st][i]; vis[i]=0; vis[st]=1; for(int i=1;i<n;i++) int minn=inf; int next=-1; for(int j=1;j<=n;j++) if(vis[j]==0&&dis[j]<minn) minn=dis[j]; next=j; if(next==-1) continue; vis[next]=1; for(int j=1;j<=n;j++) if(vis[j]==0) dis[j]=min(dis[j],dis[next]+mp[next][j]); return dis[ed]; int main() //无向图中边的个数为t,点的个数为n。 int t,a,b,x; while(~scanf("%d%d",&t,&n)) memset(mp,inf,sizeof(mp)); while(t--) scanf("%d%d%d",&a,&b,&x);//起点a,终点b,权值x。 mp[a][b]=min(x,mp[a][b]);//可以当板子丫! mp[b][a]=min(x,mp[b][a]); printf("%d\n",djs(1,n));
以上是关于深夜补最短路!的主要内容,如果未能解决你的问题,请参考以下文章