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:数组开大点.....In Reply To:谁能给出测试数据,高手帮帮咱,看看下面程序 Posted by:gaojinjun at 2006-07-04 08:56:22 > #include<iostream> > #include<stdlib.h> > using namespace std; > #define inf 1001 > #define maxint 100 > int c[maxint][maxint]={0}; > int L[maxint*maxint/2][2]={0}; > > int Prim(int n) > { > int lowcost[maxint]; > int closest[maxint]; > bool s[maxint]; > int i,j,k,min,sum=0; > s[1] = true; > for(i = 2;i<= n; i++) > { > lowcost[i] = c[1][i]; > closest[i] = 1; > s[i]= false; > } > > for (i = 1; i< n; i++) > { > min = inf; > j = 1; > for ( k = 2;k<= n; k++) > if ((lowcost[k] < min)&&(!s[k])) > { > min = lowcost[ k]; > j=k; > } > sum+=min; > s[j] = true; > for(k= 2; k<= n; k++) > if((c[j][k] < lowcost[k])&&(!s[k])) > { > lowcost[k] = c[j][k]; > closest[k] =j; > } > } > return sum; > } > void convert(int q) > { > int i; > for(i=0;i<q;i++) > c[L[i][0]][L[i][1]]=0; > } > int main() > { > int N,Q; > int i,j; > > cin>>N; > if(N<3||N>100)exit(-1); > for(i=1;i<=N;i++) > for(j=1;j<=N;j++) > cin>>c[i][j]; > cin>>Q; > if(Q>N*(N+1)/2||Q<0)exit(-1); > for(i=0;i<Q;i++) > cin>>L[i][0]>>L[i][1]; > convert(Q); > int s=Prim(N); > cout<<s; > system("PAUSE"); > return 1; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator