人生第一次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;
}