https://codeforces.com/contest/1243/problem/D

题意是说:给一个图对吧,然后给出点与点的关系,边权为1,没有给出的点与点关系,则这两点边权为0,求出最小生成树权值。

因为0边也可以作为权值,而题目中边数多,而且我们知道肯定是优选边为0的,所以只需找出边权为0的联通块,这些联通块边权都是0,不同联通块之间用边权为1的连起来,也就是需要块数-1的边。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
set<int>G[N],s;
int vis[N];
void bfs(int x)
{
queue<int>q;
q.push(x);
s.erase(x);
while(q.size()>0)
{
int y=q.front();
q.pop();
if(vis[y])
continue;
vis[y]=1; for(auto it=s.begin();it!=s.end();)
{
int v=*it;
++it;
if(G[y].find(v)==G[y].end())
{
q.push(v);//cout<<"-";
s.erase(v);
}
}
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
s.insert(i);
}
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
G[x].insert(y);
G[y].insert(x);
}
int ans=0; for(int i=1;i<=n;i++)
{
if(!vis[i])
{
bfs(i);
ans++;
}
}
cout<<ans-1<<"\n";
return 0;
}

  

最新文章

  1. JAVA的反射理解
  2. js弹框3秒后自动消失
  3. 服务器端接受Json数据的绑定实现
  4. LabVIEW串口通信
  5. POJ 1837 Balance
  6. 【转载】VGA时序与原理
  7. YII 快速创建项目GII
  8. Cocos2d-x 3.x 头像选择,本地相册图片+图片编辑(Android、IOS双平台)
  9. codeforces 557D. Vitaly and Cycle 二分图染色
  10. GitHub Toturial
  11. MySQLdb模块(数据库)
  12. SQL Server中如何定位Row Lock锁定哪一行数据
  13. linux scanf函数%d后加空白
  14. Fiddler抓包4-工具介绍(request和response)
  15. PO BO VO DTO POJO DAO概念及其作用(附转换图)
  16. c++ 满足条件拷贝,容器扩容(copy_if)
  17. TX2平台CAN总线收发功能的测试
  18. boost::asio::io_service类
  19. java 接口调用
  20. Java网络编程学习A轮_06_NIO入门

热门文章

  1. 笔记||Python3之字符串格式化输出
  2. Python3 面向对象进阶2
  3. LInux内核配置过程
  4. vue中$attrs和$listeners以及inheritAttrs的用法
  5. Java开发数据库设计的14个技巧,你知道几个?
  6. js prop方法
  7. 面试题:为什么客户端最后还要等待2MSL
  8. Python与线性代数基本概念
  9. JavaFX如何为按钮设置快捷键?
  10. onTouchEvent中,跟随手指滑动的view出现抖动