| ||||||||||
| 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:用G++一直WA,C++过的,不知道为什么In Reply To:Re:用G++一直WA,C++过的,不知道为什么 Posted by:chinhape at 2011-07-31 11:26:21 > 求代码
#include <iostream>
#include<cmath>
#include<cstdio>
#include<climits>
using namespace std;
struct node
{
int x,y;
}a[500],dp[500];
void Prim(int b[],int s,int p)
{
int i,key[500],v=1;
for(i=0;i<p;i++)
{
key[i]=1;
}//标记分集合
int t,m=0,f=0;
key[0]=0;
dp[0]=a[0];
while(f<p-1)
{
for(i=0;i<=f;i++)//经过p-1次循环生成最小树
{
for(int j=0;j<p;j++)
{
t=(a[j].x-dp[i].x)*(a[j].x-dp[i].x)+(a[j].y-dp[i].y)*(a[j].y-dp[i].y);
// cout<<t<<endl;
if(t<b[m]&&key[j]==1)
{
b[m]=t;
v=j;
}//end if 判断
}//end for
//cout<<m<<endl;
//cout<<b[m]<<endl;
}//end for
f++;dp[f]=a[v];
key[v]=0; m++;
}
int max=0;
for(int j=0;j<s;j++)//判断第s个max
{
max=0;
for(i=0;i<m-1;i++)
{
if(b[i]>max)
{
// cout<<max<<endl;
max=b[i];
v=i; //cout<<max<<endl;
}
}
b[v]=0;
//cout<<max<<endl;
}
printf("%0.2f\n",sqrt((double)max));
}
int main()
{
int N,s,p;
cin>>N;int i;
while(N--)
{
cin>>s>>p;
for(i=0;i<p;i++)
cin>>a[i].x>>a[i].y;
int b[500];
for(i=0;i<500;i++)
b[i]=INT_MAX;
Prim(b,s,p);
}
return 0;
}
为什么我测试数据过了还是错的啊~~~~
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator