#include"iostream"
#include"algorithm"
using namespace std;
const int maxn=100;
const int inf=999999999;
int c[maxn][maxn];
int dist[maxn];
int s[maxn];
int n;
int prim()
{
memset(s,0,sizeof(s));
int i,j;
int u=0;
int len=0;
for(i=0;i<n;i++)
dist[i]=c[0][i];
s[0]=1;
for(i=0;i<n-1;i++)
{
int Min=inf;
for(j=0;j<n;j++)
if(!s[j]&&dist[j]<Min)
{
Min=dist[j];
//cout<<"M"<<Min<<" ";
u=j;
}
//if(Min==inf) return -1;
//cout<<Min<<endl;
len+=Min;
s[u]=1;
for(j=0;j<n;j++)
{
if(!s[j]&&dist[j]>c[u][j])
dist[j]=c[u][j];
}
}
return len;
}
int main()
{
//freopen("a.txt","r",stdin);
while(cin>>n&&n)
{
int i,j;
int si,sj;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
if(i==j) c[i][j]=0;
else c[i][j]=inf;
dist[i]=inf;
}
for(i=0;i<n-1;i++)
{
char a;
int number;
cin>>a>>number;
si=a-'A';
while(number--){
char b;
int len;
cin>>b>>len;
sj=b-'A';
if(len<c[si][sj])
c[si][sj]=c[sj][si]=len;
}
}
/*for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<c[i][j]<<" ";
cout<<endl;
} */
cout<<prim()<<endl;
}
return 0;
}
HDOJ1301 prim
最新推荐文章于 2019-09-06 21:02:00 发布