zoukankan      html  css  js  c++  java
  • Codeforces Round #599 (Div. 2) D. 0-1 MST

    其实就是找连通块的数量。
    注意set和vector这些容器不能边修改边遍历,需要在修改之前将迭代器往后加一。

    //#pragma GCC optimize(3)
    #include <bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    const int N=2e5+5;
    const int mod=998244353;
    int n,m;
    map<int,int>mp[N];
    bool vis[N];
    set<int>ss;
    void bfs(int s)
    {
        queue<int>que;
        ss.erase(s);
        que.push(s);
        vis[s]=1;
        while(!que.empty())
        {
            int now=que.front();
            que.pop();
            set<int>::iterator it;
            for(it=ss.begin();it!=ss.end();)
            {
                int v=*it;
                ++it;
                if(!mp[now][v])
                {
                    ss.erase(v);
                    vis[v]=1;
                    que.push(v);
                }
            }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)ss.insert(i);
        //for(int i:ss)cout<<i<<endl;
        for(int i=1;i<=m;i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            mp[u][v]=mp[v][u]=1;
        }
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i])bfs(i),ans++;
        }
        cout<<ans-1<<endl;
        return 0;
    }
    
    
    
  • 相关阅读:
    luogu P3295 [SCOI2016]萌萌哒
    luogu P4916 魔力环
    CF997C Sky Full of Stars
    CF961G Partitions
    android屏蔽软键盘并且显示光标
    设置和获取Android中各种音量
    自定义广播
    发送广播
    android取高度
    Java数字格式化
  • 原文地址:https://www.cnblogs.com/liuquanxu/p/11811448.html
Copyright © 2011-2022 走看看