在大神的博客上看了一些思路,然后再再看书整理一下思路,总结了一下算法,也慢慢能写出一些东西,但是还是wa可是还是很多数据结构没有处理好所以我就直接贴了
#include <iostream>
using namespace std;
#define inf 1<<29
#define MAXM 2005
#define MAXV 1005
typedef struct{
int a,b,w;
}Edge;
Edge edge[MAXM];
int n,m;
void bellman_ford(){
int i,j;
int d[MAXV];
for(i=2;i<=n;i++) d[i]=inf;
d[1]=0;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(d[edge[j].a]>edge[j].w+d[edge[j].b]) d[edge[j].a]=edge[j].w+d[edge[j].b];
if(d[edge[j].b]>edge[j].w+d[edge[j].a]) d[edge[j].b]=edge[j].w+d[edge[j].a];
}
}
printf("%d
",d[n]);
}
int main(){
int i,a,b,c;
while(~scanf("%d%d",&m,&n)){
for(i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
edge[i].a=a;
edge[i].b=b;
edge[i].w=c;
}
bellman_ford();
}
return 0;
}