zoukankan      html  css  js  c++  java
  • 洛谷 P2097 资料分发1

    题目描述

    有一些电脑,一部分电脑有双向数据线连接。如果一个电脑得到数据,它可以传送到的电脑都可以得到数据。现在,你有这个数据,问你至少将其输入几台电脑,才能使所有电脑得到数据。

    输入输出格式

    输入格式:

     

    第一行两个数n,m。n是点数,m是边数。

    接下来m行,每行2个整数p,q表示p到q有一条双向数据线。

     

    输出格式:

     

    一个整数,表示至少输入的电脑数量。

     

    输入输出样例

    输入样例#1: 复制
    4 5
    1 2
    1 3
    2 3
    2 1
    3 4
    输出样例#1: 复制
    1

    说明

    对于30%的数据:n<=100,m<=1000

    对于60%的数据:n<=2000,m<=100000

    对于100%的数据:n<=100000, m<=200000

    数据不保证没有重边,不保证没有自回环

    思路:并茶几

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m,ans;
    int fa[100010],vis[100010];
    int find(int x){
        if(fa[x]==x)    return x;
        else return fa[x]=find(fa[x]);
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)    fa[i]=i;
        for(int i=1;i<=m;i++){
            int u,v;
            scanf("%d%d",&u,&v);
            int dx=find(u);
            int dy=find(v);
            if(dx==dy)    continue;
            fa[dx]=dy;
        }
        for(int i=1;i<=n;i++)
            if(!vis[find(i)]){
                ans++;
                vis[fa[i]]=1;
            }
        cout<<ans;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    常用网址记录
    css一些兼容问题
    css hack
    js 闭包
    js 继承
    js 实现淘宝放大镜
    css做三角形的方法
    js 轮播效果
    css3特效
    css布局
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7859040.html
Copyright © 2011-2022 走看看