标签:
//dijkstra算法; //这题建邻接矩阵的时候有坑(先读入边后读入点),还有重边; #include<iostream> #include<cstdio> using namespace std; const int INF=10e7; const int MAXN=2010; int k,minn; int cost[MAXN][MAXN]; int lowcost[MAXN]; bool vis[MAXN]; void dij(int n,int start) { for(int i=1;i<=n;i++) { lowcost[i]=INF;vis[i]=0; } lowcost[start]=0; for(int i=1;i<=n;i++) { k=-1,minn=INF; for(int i=1;i<=n;i++) { if(!vis[i]&&lowcost[i]<minn) {minn=lowcost[i];k=i;} } if(k==-1) break; vis[k]=1; for(int i=1;i<=n;i++) { if(!vis[i]&&cost[k][i]>=0&&lowcost[k]+cost[k][i]<lowcost[i]) { lowcost[i]=lowcost[k]+cost[k][i]; } } } } int main() { int t,n,a,b,c; while(scanf("%d%d",&t,&n)!=EOF) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) cost[i][j]=0; else cost[i][j]=INF; } } for(int i=1;i<=t;i++) { scanf("%d%d%d",&a,&b,&c); if(c<cost[a][b]) { cost[a][b]=c; cost[b][a]=c; } } dij(n,n); printf("%d\n",lowcost[1]); } return 0; }
POJ 2387 Til the Cows Come Home(dij+邻接矩阵)
标签:
原文地址:http://www.cnblogs.com/atmacmer/p/5196879.html