| ||||||||||
| 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<cstring>
using namespace std;
double map[1001][1001];
double cost[1001];
int close[1001];
char name[1001][21];
int n,m;
double sum,len,tol;
char s1[21],s2[21];
void prim(int v)
{ int i,j,k;
for(i=1;i<=n;i++)
{ cost[i]=map[v][i];
close[i]=v;
}
for(i=1;i<n;i++)
{ double minn=1000000000;
for(j=1;j<=n;j++)
{
if(cost[j]>0&&minn>cost[j])
{
minn=cost[j];
k=j;
}
}
sum+=minn;
cost[k]=0;
for(j=1;j<=n;j++)
{
if(cost[j]>0&&map[k][j]>0&&map[k][j]<cost[j])
{ cost[j]=map[k][j];
close[j]=k;
}
}
}
}
int check(char *s)
{ int i;
for(i=1;i<=n;i++)
if(strcmp(name[i],s)==0)
return i;
}
int main()
{ sum=0.0;
memset(map,0,sizeof(map));
memset(close,0,sizeof(close));
memset(cost,0,sizeof(cost));
int i,j,k;
scanf("%lf",&tol);
scanf("%d",&n);
getchar();
for(i=1;i<=n;i++)
{ scanf("%s",name[i]);
}
scanf("%d",&m);
getchar();
int a,b;
for(i=1;i<=m;i++)
{ scanf("%s %s %lf",s1,s2,&len);
getchar();
a=check(s1);
b=check(s2);
map[a][b]=len;
map[b][a]=len;
}
prim(1);
if(sum>tol)
printf("Not enough cable\n");
else printf("Need %.1lf miles of cable\n",sum);
system("pause");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator