| ||||||||||
| 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>
#include <stdio.h>
#include<cmath>
using namespace std;
int cmp(const void* a,const void* b)
{
return *(int*)b-*(int*)a;
}
int prim(int a[][501],int n,bool s[])
{
int lowcost[501];
int closest[501];
int maxle=0;
s[1]=true;
for(int i=2;i<=n;i++)
{
lowcost[i]=a[1][i];
closest[i]=1; //closest[j]表示J在S中的邻接顶点
s[i]=false; //false 表示尚未通过此顶点
}///初始化过程
for(i=1;i<n;i++)
{
int min=100000;
int j=1;
for(int k=2;k<=n;k++)
{
if(lowcost[k]<min && s[k]==false)
{
min=lowcost[k];
j=k;
}
}
s[j]=true;
for(int e=2;e<=n;e++)
{
if(a[j][e]<lowcost[e] && s[e]==false)
{
lowcost[e]=a[j][e];
closest[e]=j;
}
}
}
qsort(lowcost+1,n,sizeof(int),cmp);
//for(i=1;i<n;i++)
//cout<<lowcost[i]<<endl;
return lowcost[1];
}
int main()
{
int T;
scanf("%d",&T);
for(int i=0;i<T;i++)
{
int n;
int a[501][501];
bool s[501];
memset(s,0,sizeof(s));
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
cout<<prim(a,n,s)<<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