zoukankan      html  css  js  c++  java
  • P1195 口袋的天空

    P1195 口袋的天空


    先将每个点看做一棵生成树

    合并时生成树个数-1

    #include<cstdio> 
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct node
    {
    	int point1;
    	int point2;
    	int weight;
    };
    node line[500000];
    int f[10010];
    int find(int x)
    {
    	if(f[x]==x)
    		return x;
    	return f[x]=find(f[x]);
    }
    bool compare(const node &a,const node &b)
    {
    	return a.weight<b.weight;
    }
    int main()
    {
    	int n,m,k;
    	scanf("%d%d%d",&n,&m,&k);
    	for(int i=1;i<=n;i++)
    		f[i]=i;
    	//int a,b,c;
    	for(int i=1;i<=m;i++)
    		scanf("%d%d%d",&line[i].point1,&line[i].point2,&line[i].weight);
    	sort(line+1,line+1+m,compare);
    	int sum=n;
    	int i=1;
    	int ans=0;
    	while(sum>k&&i<=m)
    	{
    		int f1=find(line[i].point1),f2=find(line[i].point2);
    		if(f1!=f2)
    		{
    			f[f1]=f2;
    			ans+=line[i].weight;
    			sum-=1;
    		}
    		i+=1;
    	}
    	if(sum==k)
    		printf("%d",ans);
    	else
    		printf("No Answer");
    	return 0;
    }
    /*
    5 8 0
    1 2 2
    1 3 1
    1 5 4
    3 2 2
    3 4 3
    3 5 4
    2 5 4
    4 5 5
    */
    
  • 相关阅读:
    SonarQube
    Gerrit
    Jenkins
    Jenkins
    GitLab
    GitLab
    GitLab
    centos7配置国内yum源
    CentOS7 ping: unknown host www.baidu.com
    VirtualBox下安装CentOS7系统
  • 原文地址:https://www.cnblogs.com/Lance1ot/p/8707475.html
Copyright © 2011-2022 走看看