zoukankan      html  css  js  c++  java
  • 洛谷P1550打井

    打井

    题目

    该题是一个最小生成树的好题,但是比起一般的最小生成树来说他不仅仅有各个井相连,而且还要和地下水相连,所以地下水我们也可以看成一口井。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    struct edge {
    	int a, b, c;
    }e[100100];
    bool cmp(const edge &a, const edge &b)
    {
    	return a.c < b.c;
    }
    int cnt, fa[100100], vis[1000][1000], ans;int n, m;
    int find(int a)
    {
    	if (fa[a] == a)
    		return a;
    	return fa[a] = find(fa[a]);	
    } 
    int main()
    {
     	
     	scanf("%d", &n);
     	for (int i = 1; i <= n; i++)
     	{
     		scanf("%d", &e[++m].c);
     		e[m].a = 0, e[m].b = i;
     	}
     	for (int i = 1; i <= n; i++)
     		for (int j = 1; j <= n; j++)
     		{
     			int a;
     			scanf("%d", &a);
     			if (!vis[i][j] || !vis[j][i])
     			{
     				vis[i][j] = vis[j][i] = 1;
     				e[++m].a = i, e[m].c = a, e[m].b = j;		
     			}
     		}
       	sort(e + 1, e + 1 + m, cmp);
      	for (int i = 0; i <= n; i++)
      		fa[i] = i;
     	for (int i = 1; i <= m; i++)
     	{
     		if (cnt == n)
     			printf("%d", ans), exit(0);
      		if (find(e[i].a) != find(e[i].b))
       		{
      			fa[find(e[i].a)] = find(e[i].b);
      			ans += e[i].c;
      		// 	printf ("%d %d %d
    ", e[i].b, e[i].a, e[i].c);
     			cnt++;
      		}
      	}
    }
    
  • 相关阅读:
    Flask学习目录
    Android笔记
    PyQt学习目录
    学习目录
    Python学习目录一
    sqlserver STUFF & STR
    PowerShell+Jenkins,实现项目的自动化部署
    DotNet Core Backend development
    .Net Core 类注入单元测试
    团队项目之团队展示&选题
  • 原文地址:https://www.cnblogs.com/liuwenyao/p/10226273.html
Copyright © 2011-2022 走看看