当前位置:网站首页>杭电多校6 1010. Planar graph
杭电多校6 1010. Planar graph
2022-08-08 02:27:00 【Strezia】
1010
最小生成树
题意
给出一个 n n n 个点 m m m 条边的平面图,问至少删多少条边可以使得平面图的每部分都相互可达,输出所需删的最少边数以及边序号字典序最小的方案。
思路

可以建对偶图然后跑mst,但有更简单的方法。
画图发现满足“平面图的每部分都相互可达”的图一定是树或者是森林,(其实也就是一定无环,无环即树),也就是我们删完边之后剩下的图一定是树/森林,于是按边序号从大到小跑Kruscal就可以了,对第 i i i 号边,如果所连的两点在同一集合,那么这条边就必须删掉。这样可以满足删的边的字典序尽可能小。
代码
void solve() {
cin >> n >> m;
for(int i = 1; i <= n; i++) {
fa[i] = i;
}
for(int i = 1; i <= m; i++) {
cin >> e[i].u >> e[i].v;
}
vector<int> ans;
for(int i = m; i; i--) {
if(find(e[i].u) == find(e[i].v)) {
ans.pb(i);
}
else {
merge(e[i].u, e[i].v);
}
}
sort(ans.begin(), ans.end());
cout << ans.size() << endl;
for(auto i : ans) {
cout << i << ' ';
}
cout << endl;
}
边栏推荐
- Case: ELK log analysis system
- 三、WinUI3中在OnLauncher处理单例
- Enterprise learning (11) to build the main branch, trigger, nailing notice
- 机器学习实操的七个步骤
- STM32F103C8/BT6 USART1 DMA发送失败
- find prime problem
- Take you to brush (Nioke.com) C language 100 questions (the fifth day)
- Octopus Application Chain|Content Curation Collaboration Organization DISCOVOL DAO Mainnet Launched in August
- 带你刷(牛客网)C语言百题(第五天)
- RV-GAN:使用新的多尺度生成对抗网络分割眼底照片中的视网膜血管结构
猜你喜欢
随机推荐
NVIDIA NCCL优化——利用共享内存实现比NCCL更快的集合通信
IDEA 工具类及其余类方法测试方式
LED驱动程序进一步优化-分层-分离
机器学习实操的七个步骤
陈强教授《机器学习及R应用》课程 第十二章作业
任务调度框架 Quartz 一文读懂
Overseas Metaverse media must pay attention to the integrity of the propaganda
已知某路口发生事故的频率是平均每天2次,求此处一天内发生4次事故的概率。
LeetCode刷题——组合总和 Ⅳ#377#Medium
The futures company has all kinds of account opening fee
Negative Number Storage and Type Conversion in Program
陈强教授《机器学习及R应用》课程 第八章作业
LeetCode二叉树系列——257二叉树的所有路径
基于图像二维熵的视频信号丢失检测(Signal Loss Detection)
After nibbling on this Ali manual, the new year will enter Ali from seven sides
陈强教授《机器学习及R应用》课程 第九章作业
PC博物馆(番外01)-城会玩,初中生开发实体尺规大航海游戏
深入Synchronized各种使用方法
Win11右键恢复经典win10最简单方法(基本0操作)
陈强教授《机器学习及R应用》课程 第五章作业








