zoukankan      html  css  js  c++  java
  • hdu1863 畅通project(判定最小生成树)

    畅通project

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 20662    Accepted Submission(s): 8857


    Problem Description
    省政府“畅通project”的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,仅仅要能间接通过公路可达就可以)。经过调查评估。得到的统计表中列出了有可能建设公路的若干条道路的成本。

    现请你编敲代码,计算出全省畅通须要的最低成本。

     

    Input
    測试输入包括若干測试用例。

    每一个測试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N 
    行相应村庄间道路的成本。每行给出一对正整数,各自是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,所有输入结束,相应的结果不要输出。


     

    Output
    对每一个測试用例,在1行里输出全省畅通须要的最低成本。若统计数据不足以保证畅通,则输出“?

    ”。

     

    Sample Input
    3 3 1 2 1 1 3 2 2 3 4 1 3 2 3 2 0 100
     

    Sample Output
    3 ?

     

    Source
     

    Recommend
    lcy   |   We have carefully selected several similar problems for you:  1102 1301 1874 1856 1162 
     

    Statistic | Submit | Discuss | Note

    最小生成树的判定方法有kruskal算法和prim算法

    我觉得kruskal算法比較简单。。

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    int m,n,fa[105];
    struct node
    {
    	int a,b,cost;
    }c[105];
    bool cmp(node x,node y)
    {
    	return x.cost<y.cost;
    }
    void init()
    {
    	for(int i=1;i<=n;i++)
    	fa[i]=i;
    }
    int find(int x)
    {
    	if(fa[x]!=x) fa[x]=find(fa[x]);
    	return fa[x];
    }
    int main()
    {
    	while(scanf("%d %d",&m,&n)!=EOF)
    	{
    		if(m==0)
    		break;
    		init();
    		for(int i=0;i<m;i++)
    		scanf("%d %d %d",&c[i].a,&c[i].b,&c[i].cost);
    		sort(c,c+m,cmp);
    		int sum=0;
    		for(int i=0;i<m;i++)
    		{
    			int x=find(c[i].a);
    			int y=find(c[i].b);
    			if(x!=y)
    			fa[x]=y,sum+=c[i].cost;
    		}
    		int count=0;
    		for(int i=1;i<=n;i++)
    		if(fa[i]==i)
    		count++;
    		if(count==1)
    		printf("%d
    ",sum);
    		else
    		printf("?
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    IO
    多线程
    常用类
    异常
    接口
    面向对象
    面向对象
    学习数组
    for的嵌套循环
    XML:是什么?怎样工作的?可以做什么?将来的发展有会怎样?
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6812460.html
Copyright © 2011-2022 走看看