poj1287 mst水题

很水很简单。

#include

using namespace std;
const int N=55;
const int inf=99999999;
int m,n;
int mat[N][N];
bool visit[N];


void mst()
{
memset(visit,0,sizeof(visit));
int ans=0;
visit[1]=true;
int count=m-1;
while(count--)
{
int min=inf,mink=0;
for(int i=1;i<=m;i++)
{
if(visit[i])
{
for(int j=1;j<=m;j++)
{
if(!visit[j])
{
//Min=min(Min,mat[i][j]);
if(min>mat[i][j])
min=mat[i][j],mink=j;
}
}
}
}
visit[mink]=true;
ans+=min;
}
printf("%d\n",ans);
}
int main()
{
// freopen("C:\\Users\\wuyanyisb\\Desktop\\1.txt","r",stdin);
while(scanf("%d %d",&m,&n),m!=0)
{
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
mat[i][j]=inf;
int a,b,c;
for(int i=1;i<=n;i++)
{
//int a,b,c;
scanf("%d %d %d",&a,&b,&c);
//mat[a][b]=min(mat[a][b],c);
if(mat[a][b]>c)
mat[b][a]=mat[a][b]=c;
}
mst();
}
return 0;
}

你可能感兴趣的:(poj1287 mst水题)