浙江大学机试 畅通工程 Easy

基本思想:

无;

关键点:

无;

#include<iostream>
#include<string>
#include<vector>
#include<map>
using namespace std;

const int maxn = 1020;

int father[maxn];

int m, n;
bool ma[maxn][maxn];

void init(int n) {
    for (int i = 0; i <= n; i++)
        father[i] = i;
}

int findfather(int x) {
    while (x != father[x]) {
        x = father[x];
    }
    return x;
}

void unfather(int a, int b) {
    int aa = findfather(a);
    int bb = findfather(b);
    father[aa] = bb;
}

int cntnum(int n) {
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
        if (father[i] == i)
            cnt++;
    }
    return cnt;
}

int main() {
    while (cin >> n >> m) {
        if (n == 0)
            continue;
        fill(ma[0], ma[0] + maxn * maxn, false);
        init(n);
        int a, b;
        for (int i = 0; i < m; i++) {
            cin >> a >> b;
            if (!ma[a][b]) {
                ma[a][b] = ma[b][a] = true;
                unfather(a, b);
            }
        }
        cout<<cntnum(n)-1<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/songlinxuan/p/12424144.html

时间: 2024-08-01 20:04:30

浙江大学机试 畅通工程 Easy的相关文章

清华大学机试 反向输出 Easy

基本思想: 无: 关键点: 无: #include<iostream> #include<vector> #include<algorithm> #include<string> #include<cmath> #include<set> using namespace std; int main() { string s; while (cin >> s) { for (int i = s.size() - 1; i &

清华大学机试 最大最小值 Easy

基本思想: 无: 关键点: 无: #include<iostream> #include<vector> #include<algorithm> #include<string> #include<cmath> #include<set> #include<map> using namespace std; const int maxn = 10010; int ma[maxn]; int main() { int n;

华中尔科技大机试 二叉树遍历 Easy *两序列构建二叉树

基本思想: 要求用两个序列构建新的二叉树,标准写法,注意下: 关键点: 无: #include<stdio.h> #include<stdlib.h> #include<iostream> #include<string> #include<vector> #include<algorithm> #include<map> #include<set> using namespace std; string s1

清华大学机试 特殊乘法 Easy

基本思想: 无: 关键点: 无: #include<iostream> #include<vector> #include<string> using namespace std; int charge(string a, string b) { int cnt=0; for (int i = 0; i < a.size(); i++) { for (int j = 0; j < b.size(); j++) { cnt += int(a[i] - '0')

华为机试—介绍、剖析、建议

一.华为机试介绍 1.大致介绍 时间:120分钟 环境:Visual Studio(去年是vs2005).Visual C++.VC 6.0.Eclipse(Java) 题量:共3题 初级题--60分--3组测试数据 中级题--100分--5组测试数据 高级题--160分--8组测试数据 注:初级题和中级题为必答题,高级题为附加题. 提交次数:每题最多5次 评判方式:按通过测试数据组数给分,每通过一组得20分 2.考试说明 这里有一个老版的机试考试说明,供大家参考: C/C++,JAVA机试流程

HDU1879 kruscal 继续畅通工程

继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17028    Accepted Submission(s): 7319 Problem Description 省 政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表 中列出了任意

web机试

测试: <html><style> </style><title>Demo</title> <body><div > </div> <script type="text/javascript"> //机试的测试代码 </script> </body> </html> 题目:现在有个 HTML 片段,要求编写代码,点击编号为几的链接就alert弹

计算机考研机试指南(六) ——栈

机试指南 cha 3 栈的应用 括号匹配问题 1 #include <iostream> 2 #include <stdio.h> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <math.h> 7 #include <string> 8 #include <string.h> 9 #include <std

HDU - 1232 畅通工程

畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可).问最少还需要建设多少条道路? Input测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M:随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号.为简单起见,城镇从1到N编号. 注意