| ||||||||||
| 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 | |||||||||
各位大侠,帮我看一下代码,一直WA,却不知问题出在哪??谢谢!!!不胜感激呀!!#include<iostream>
using namespace std;
#define maxint 10000
int p,c[100][100];
int Dijkstra(int v){
int t,dist[100],k,newdist=10000;
bool s[100];
int temp = maxint,last=0;
for(t=1;t<=p;t++){
dist[t] = c[v][t];
s[t] = false;
}
s[v] = true;
for(t=1;t<p;t++){
int u = v;
for(k=1;k<=p;k++)
if((!s[k])&&(dist[k]<temp)) {u = k;temp = dist[k];}
s[u] = true;
for(k=1;k<=p;k++){
if((!s[k])&&(c[u][k]<maxint)) {newdist = dist[u] + c[u][k];
if(newdist<dist[k]) dist[k] = newdist;}
}
}
for(t=1;t<=p;t++){
// cout<<dist[t];
if(dist[t]==maxint) return 0;
if(dist[t]>last) last = dist[t];
}
return last;
}
int main(){
int n,i,t,time,y,j;
while(cin>>p){
if(p==0) break;
for(i=1;i<=p;i++){
for(t=1;t<=p;t++){
if(i==t) c[i][t] = 0;
else c[i][t] = maxint;
}
}
for(i=1;i<=p;i++){
cin>>n;
for(t=1;t<=n;t++){
cin>>j>>time;
if(i==j) c[i][j] = 0;
else c[i][j] = time;
}
}
if(p==1) {cout<<"1"<<' '<<"0"<<endl;continue;}
int min = 10000,h;
for(i=1;i<=p;i++){
y = Dijkstra(i);
//cout<<"y:"<<y<<endl;
if(y==0) continue;
if(y<min) {min = y;h = i;}
}
if(min==10000) cout<<"disjoint"<<endl;
else cout<<h<<' '<<min<<' '<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator