| ||||||||||
| 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 | |||||||||
谁能给出测试数据,高手帮帮咱,看看下面程序#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