标签:describe rails 4 ssi trail strong wal conf span direct
5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100Sample Output
90Hint
#include<stdio.h> #include<queue> #include<iostream> #include<algorithm> using namespace std; int INF=99999999; int dis[2010]; int n,m; struct stu{ int x,y,w; }e[2010]; void bfs(int k) { dis[1]=0; for(int i=1;i<=k;i++) { for(int j=1;j<=m;j++) { if(dis[e[j].x]>dis[e[j].y]+e[j].w) dis[e[j].x]=dis[e[j].y]+e[j].w; if(dis[e[j].y]>dis[e[j].x]+e[j].w) dis[e[j].y]=dis[e[j].x]+e[j].w; } } } int main() { int a,b,c; scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) { dis[i]=INF; } for(int i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); e[i].x=a; e[i].y=b; e[i].w=c; } bfs(n); printf("%d ",dis[n]); return 0; }
二:dijkstra算法
每次找当前剩下的最小距离点
#include<stdio.h> #include<iostream> #include<algorithm> using namespace std; int inf=99999999; int vis[2010]={0}; int dis[2010]; int m[2010][2010]; int main() { int t,n,a,b,w; scanf("%d%d",&t,&n); for(int i=0;i<=n;i++) { for(int j=0;j<=n;j++) { m[i][j]=inf; } m[i][i]=0; dis[i]=inf; vis[i]=0; } for(int i=1;i<=t;i++) { scanf("%d%d%d",&a,&b,&w); if(m[a][b]>w)//很重要,因为有重复边 { m[a][b]=w; m[b][a]=w; } } for(int i=1;i<=n;i++) dis[i]=m[1][i]; int f,mi; for(int h=1;h<=n;h++) { mi=inf; for(int i=1;i<=n;i++) { if(!vis[i]&&mi>dis[i]) { mi=dis[i]; f=i; } } vis[f]=1; for(int i=1;i<=n;i++) if(dis[i]>dis[f]+m[f][i]) dis[i]=dis[f]+m[f][i]; } printf("%d",dis[n]); return 0; }
才开始学,看着别人的博客写都一直wr,好菜。。。
标签:describe rails 4 ssi trail strong wal conf span direct
原文地址:http://www.cnblogs.com/xzxj/p/7235958.html