zoukankan      html  css  js  c++  java
  • Aizu

     Aizu - 2564 Tree Reconstruction

    题意:一个有向图,要使得能确定每一条边的权值,要求是每个点的入权和出权相等,问你最少需要确定多少条边

    思路:这题好像有一个定理之类的,对于每一个连通块,所需要的边数是 M-N(边数-点数) ,这个原理我还不是很清楚。

      知道了这个之后,并查集求一下就完事了。

    这题我大致看了一下官方 的提交记录,发现有好多种方法可以搞。23:48:40

     1 #pragma comment(linker, "/STACK:1000000000")
     2 #include <bits/stdc++.h>
     3 #define LL long long
     4 #define INF 0x3f3f3f3f
     5 #define IN freopen("in.txt","r",stdin);
     6 using namespace std;
     7 #define MAXN 505
     8 vector<int> G[MAXN];
     9 queue<int> Q;
    10 int father[MAXN];
    11 int find(int x){
    12     if(father[x] == x) return x;
    13     father[x] = find(father[x]);
    14     return father[x];
    15 }
    16 int main(void)
    17 {
    18     //IN;
    19     int n, m;
    20     scanf("%d%d", &n, &m);
    21     for(int i = 1; i <= n; i++){
    22         father[i] = i;
    23     }
    24     int x, y;
    25     for(int i = 1; i <= m; i++){
    26         scanf("%d%d", &x, &y);
    27         x = find(x);
    28         y = find(y);
    29         if(x != y){
    30             father[x] = y;
    31         }
    32     }
    33     int ans = m - n;
    34     for(int i = 1; i <= n; i++){
    35         if(father[i] == i){
    36            ans++;
    37         }
    38     }
    39     printf("%d
    ", ans);
    40 }
  • 相关阅读:
    前台线程与后台线程的区别
    触发器
    Asp.net AutopostBack 属性
    Spring实战拆书--SpringBean
    侣行APP
    用android去写一个小程序
    java如何使用JUnit进行单元测试
    JDK的安装与配置以及eclipse的使用
    软件工程第一次作业(1)
    软件工程第一次作业(2)
  • 原文地址:https://www.cnblogs.com/macinchang/p/4751395.html
Copyright © 2011-2022 走看看