博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 840B - Leha and another game about graph | Codeforces Round #429(Div 1)
阅读量:6656 次
发布时间:2019-06-25

本文共 1588 字,大约阅读时间需要 5 分钟。

思路来自,重点大概是想到建树和无解情况,然后就变成树形DP了- -

/*CodeForces 840B - Leha and another game about graph [ 增量构造,树上差分 ]  |  Codeforces Round #429(Div 1)题意:	选择一个边集合,满足某些点度数的奇偶性分析:	将d = 1的点连成一颗树,不在树上的点都不连边。	可以发现,当某个节点u的所有子节点si均可操控 (u, si) 来满足自身要求	即整棵树上至多只有1个点不满足自身要求,就是根节点,此时需要在树中任意位置接入 d=-1 的一个节点		然后研究如何在这棵树上选边,考虑增量法	每次选择两个d=1的点加入树中,并将这棵树上两点间路径上所有的边选择状态反转	易证对于新加入的节点满足要求,而路径上原有节点仍满足要求	最后若只剩一个d=1的节点,则和一个d=-1的节点组成一对*/#include 
using namespace std;const int N = 3e5+5;struct Edge { int v, i;};vector
edge[N];vector
c1, c2;int n, m;int d[N];bool vis[N], flag[N];vector
ans;void dfs(int u){ vis[u] = 1; for (auto& e : edge[u]) { if (vis[e.v]) continue; dfs(e.v); if (flag[e.v]) ans.push_back(e.i); flag[u] ^= flag[e.v]; }}int main(){ scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { scanf("%d", &d[i]); if (d[i] == 1) c1.push_back(i); else if (d[i] == -1) c2.push_back(i); } for (int i = 1; i <= m; i++) { int u, v; scanf("%d%d", &u, &v); edge[u].push_back(Edge{v, i}); edge[v].push_back(Edge{u, i}); } if (c1.size()%2 && c2.empty()) { puts("-1"); return 0; } int k = c1.size()/2; for (int i = 0; i < k; i++) { flag[c1[i]] = flag[c1[k+i]] = 1; } if (c1.size() % 2) { flag[c1[c1.size()-1]] = flag[c2[0]] = 1; } dfs(1); printf("%d\n", ans.size()); for (auto& x : ans) printf("%d ", x); puts("");}

  

转载于:https://www.cnblogs.com/nicetomeetu/p/7400576.html

你可能感兴趣的文章
php framework interop group,PHP最佳实践系列之标准
查看>>
oracle中resource权限,Oracle内置角色connect与resource的权限
查看>>
微软 Build 2017 开发者大会:Azure 与 AI 的快速发展
查看>>
SpreadJS纯前端表格控件V11.1震撼来袭
查看>>
谈谈多年的创业之路和网络生涯
查看>>
值钱的Facebook和不拜金的扎克伯格
查看>>
一个前百度工程师看百度的狼性
查看>>
收到“2011年度十大杰出IT博客”奖杯及精美奖品
查看>>
oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件
查看>>
Shell脚本监控CPU、内存和硬盘利用率
查看>>
惠普中国区副总裁、软件集团大中华区总经理于志伟:大数据从5%突破
查看>>
【赏析】15个非常棒的使用CSS3的设计组合
查看>>
SQL养成一个好习惯是一笔财富
查看>>
How To Write A Simple Web Crawler In Ruby
查看>>
我的淘蝌蚪
查看>>
【翻译】(12)NDK GDB
查看>>
10款视频转码软件的H264低码率高画质转码评测
查看>>
NHibernate初学者指南(14):配置的三种方式
查看>>
web程序Jar包冲突解决方法
查看>>
C# 线程手册 第三章 使用线程 .NET 同步策略
查看>>