您的位置:首页 > 其它

hdu 1301 Jungle Roads (并查集+快排)

2013-08-08 10:37 351 查看
曾今连题都没读懂,如今看了就懂,而且连题都没读,只是看了输入的格式就明白了,难道这就是进步了!呵呵·····

或许坚持就是胜利这句话是对的吧!未来的路还很远!今日的累或许今日未能收到回报,莫急!来日······

坚持!!!加油!!!!!!

#include"algorithm"

using namespace std;

int pre[200];

int find(int k)

{

if(k==pre[k])

return k;

pre[k]=find(pre[k]);

return pre[k];

}

struct node

{

int x,y;

int z;

}a[50000];

int cmp(node a,node b)

{

return a.z<b.z;

}

int main()

{

int n,i,j,m,t,b,f1,f2,ans;

char str[20],st[20];

while(scanf("%d",&n),n)

{

for(i=0;i<n;i++)

pre[i]=i;

t=0;

for(i=0;i<n-1;i++)

{

scanf("%s%d",str,&m);

for(j=0;j<m;j++)

{

scanf("%s%d",st,&b);

a[t].x=str[0]-'A';

a[t].y=st[0]-'A';

a[t].z=b;

t++;

}

}

sort(a,a+t,cmp);

ans=0;

for(i=0;i<t;i++)

{

f1=find(a[i].x);

f2=find(a[i].y);

if(f1!=f2)

{

pre[f1]=f2;

ans+=a[i].z;

}

}

printf("%d\n",ans);

}

return 0;

}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: