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