HDU 1879-继续畅通工程

原题链接:点击此处

1233的升级版(因为差不多所以都放一起了),就是加了一个状态,因此我们可以先判断每条路的状态,如果是修好的,就让它们的成本是0;如果没修,就给出成本。其余地方和1233一样,程序唯一的改动在此:

判断状态:

for(i=1;i<=n;i++)
            {
                scanf("%d %d %d %d",&tree[i].u,&tree[i].v,&tree[i].len,&tree[i].build);
                if(tree[i].build==1)
                    tree[i].len=0;
            }
View Code

合并:

 for(i=1;i<=n;i++)
        {
            int x=Find(tree[i].u);
            int y=Find(tree[i].v);
            if(x==y)
                continue;
            pre[y]=x;//这里是把x当作了整棵最小生成树的根节点,写成parent[x]=y也可以,根节点换成了y,这里的x,y值都不会大于村庄的编号
            cost+=tree[i].len;
            Unoin(tree[i].u,tree[i].v);
        }
View Code

其他程序看前一个文章吧,就不多说了。

posted @ 2016-07-30 21:45  君子酱  阅读(92)  评论(0编辑  收藏  举报