您的位置:首页 > 其它

hdu 2122:Ice_cream’s world III

2015-08-18 15:59 337 查看
人生第一次1A

写完即AC

艾玛高兴坏了

拉个屎冷静一下 = =

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<math.h>
#define maxn 1111
#define inf 0xfffffff
using namespace std;

int treedis[maxn];
int dis[maxn][maxn];
bool vex[maxn];
int n;
int cost;

int prim()
{
int i,j,v;
vex[0]=true;
cost=0;
int minn;
int flag;
for(i=0;i<n;i++)
treedis[i]=dis[0][i];
for(i=1;i<n;i++)
{
minn=inf;
flag=0;
for(j=0;j<n;j++)
{
if(vex[j]==false&&minn>treedis[j])
{
minn=treedis[j];
v=j;
flag=1;
}

}

if(flag==1)
{
cost+=minn;
vex[v]=true;

for (j=0;j<n;j++)
{
if(vex[j]==false&&treedis[j]>dis[v][j])
{
treedis[j]=dis[v][j];
}
}
}
else
return 0;
}
return 1;
}

int main()
{
int i,j,s,t,c,m;
while(~scanf("%d %d",&n,&m))
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
dis[i][j]=inf;
for(i=0;i<n;i++)
{
vex[i]=false;
dis[i][i]=0;
}
while(m--)
{
scanf("%d %d %d",&s,&t,&c);
if(c<dis[s][t])
dis[s][t]=dis[t][s]=c;
}
int x=prim();
if(x==0)
{
printf("impossible\n");
printf("\n");
}
else
{
printf("%d\n",cost);
printf("\n");
}

}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: