Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Dijistra过的~~~#include <cstdlib> #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int M=105,INF=1<<30; int mp[M][M],n,dist[M],flag[M],D[M][M]; int dijstra() { int i,j,u,min; for(i=1;i<=n;i++) { dist[i]=INF; flag[i]=0; } dist[1]=0; for(i=1;i<=n;i++) { min=INF,u=0; for(j=1;j<=n;j++) { if(!flag[j]&&dist[j]<min) { min=dist[j]; u=j; } } flag[u]=1; for(j=1;j<=n;j++) if(!flag[j]&&(dist[j]>dist[u]+mp[u][j])) dist[j]=dist[u]+mp[u][j]; } return min; } int main(int argc, char *argv[]) { int i,j; char ch[100]; while(scanf("%d",&n)!=EOF) { for(i=2;i<=n;i++) { for(j=1;j<=i-1;j++) { scanf("%s",ch); if(ch[0]=='x') mp[i][j]=mp[j][i]=INF; else mp[i][j]=mp[j][i]=atoi(ch); } } for(i=1;i<=n;i++) { mp[i][i]=0; } /* for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%d ",mp[i][j]); printf("\n"); } */ //ans=0; //dijstra(); printf("%d\n",dijstra()); } //system("PAUSE"); return EXIT_SUCCESS; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator