
| Contests | Virtual Contests | Problems | Submit | Runs Status | Rank List | Forum |
| zhaofeifiei104 | 6335. who can tell me why Runtime Error SIGSEGV thx |
| 2008-08-30 00:17:58 | #include<iostream> using namespace std; int main() { int s,d,i,j,k,n,m,x,y,ans,u;bool yes; cin>>k; while(k--) { cin>>n>>m; cin>>s>>d; int mark[n+1],a[n+1][n+1]; memset(mark,0,sizeof(mark)); memset(a,0,sizeof(a)); for(i=1;i<=m;i++) {cin>>x>>y>>a[x][y];a[y][x]=a[x][y];} mark[s]=1; while(1) { yes=false; int min=10000000; for(i=1;i<=n;i++) { if(mark[i]==0&&a[s][i]!=0&&a[s][i]<min) {min=a[s][i];u=i;yes=true;} } mark[u]=1; ans=min; if(!yes)break; if(mark[d]==1)break; for(j=1;j<=n;j++) { if(j!=s&&mark[j]==0&&a[u][j]!=0) { if(a[s][j]>a[s][u]+a[u][j]) { a[s][j]=a[s][u]+a[u][j]; } } } } if(mark[d]!=1)cout<<-1<<endl; else cout<<ans<<endl; } return 0; } |
| 1 |