| ||||||||||
| 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;
int **Matrix;
int sum=0;
int n;
void Prim()
{
int max,j,index,i;
int *N;
N=new int[n];
int *c;
c=new int[n];
bool *b;
b=new bool [n]; //1 is tree node,0 is not tree node
b[0]=1;
for(i=1;i<n;i++)
b[i]=0;
for(i=0;i<n;i++)
{
if(Matrix[0][i]!=-1)
{
N[i]=0;
c[i]=Matrix[0][i];
}
else
c[i]=-1;
}
for(i=0;i<n-1;i++)
{
//search the max edge in array c
max=-1;
index=0;
for(j=1;j<n;j++)
{
if(max<c[j] && b[j]==0)
{
index=j;
max=c[j];
}
}
if(c[index]==-1)
{
sum=-1;
return;
}
b[index]=1;
sum=sum+max;
for(j=0;j<n;j++) //update N and C
{
if(Matrix[index][j]!=-1 && b[j]==0)
{
if(Matrix[index][j]>c[j])
{
N[j]=index;
c[j]=Matrix[index][j];
}
}
}
}
}
int main()
{
int m,x,y,w;
cin>>n>>m;
Matrix=new int*[n];
int i;
for(i=0;i<n;i++)
Matrix[i]=new int[n];
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
Matrix[x][y]=-1; // 初始化邻接矩阵
}
for(i=0;i<m;i++) //输入数据
{
cin>>x>>y;
cin>>Matrix[x-1][y-1];
Matrix[y-1][x-1]=Matrix[x-1][y-1];
}
Prim();
cout<<sum<<endl;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator