您的位置:首页 > 其它

hdoj1863

2016-04-30 17:13 190 查看
#include"iostream"
using namespace std;
const int vex=150;
const int maxl=999999;
int prim(int n,int *low,int c[][vex])
{
int i,j,s[vex]={0},len=0,pos;
pos=1;
s[1]=1;
for(i=2;i<=n;i++)
low[i]=c[1][i];
for(i=1;i<n;i++)
{
int min=maxl;
for(j=1;j<=n;j++)
{
if(!s[j]&&low[j]<min)
{
min=low[j];
pos=j;
}
}
if(min==maxl) break;
s[pos]=1;
len+=min;
for(j=1;j<=n;j++)
{
if(!s[j]&&c[pos][j]<low[j])
low[j]=c[pos][j];
}
}
if(i==n)
return len;
else
return -1;
}
int main()
{
//freopen("a.txt","r",stdin);
int low[vex];
int c[vex][vex];
int i,j,s,t,len,n,m;
while(cin>>n>>m&&n)
{
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
c[i][j]=maxl;
low[i]=maxl;
}
for(i=0;i<n;i++)
{
cin>>s>>t>>len;
if(c[s][t]>len)
c[s][t]=c[t][s]=len;
}
int sb=prim(m,low,c);
if(sb==-1)
cout<<"?\n";
else
cout<<sb<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: