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 |
Re:primIn Reply To:prim Posted by:azma at 2008-12-22 13:19:34 > #include<iostream> > using namespace std; > > const int N = 1002; > > int W[N][N],Distance[N]; > int nearest[N],n,T = 0; > > bool s[N],flag=true; > > void prim(void) > { > int i,j,k; > int max=-1000000000; > s[1]=true; > for(i=2;i<=n;i++) > { > Distance[i]=W[1][i]; > nearest[i]=1; > s[i]=false; > } > for(i=1;i<n;i++) > { > max=-1000000000; > j=1; > for(k=2;k<=n;k++) > if(!s[k]&&Distance[k]>max) > { > max=Distance[k]; > j=k; > } > T+=W[j][nearest[j]]; > if(nearest[j]<1) > { > flag=false; > return; > } > s[j]=true; > for(k=2;k<=n;k++) > if(!s[k]&&W[k][j]>Distance[k]) > { > Distance[k]=W[k][j]; > nearest[k]=j; > } > } > } > int main(){ > int i,a,b,c,m; > cin>>n>>m; > for(a=1;a<=n;a++) > for(b=1;b<=n;b++) > W[a][b]=-1000000000; > for(i=1;i<=m;i++) > { > cin>>a>>b>>c; > if(W[a][b]<c) > W[a][b]=W[b][a]=c; > } > prim(); > if(flag)cout<<T<<endl;else cout<<-1<<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