[ARC105E] Keep Graph Disconnected
好题。
如果 \(1\) 和 \(n\) 一直联通,开始即结束。
如果 \(n\mod 4=1\),那么 \(\frac 12x(x+1)+\frac12(n-x)(n-x+1)\) 为偶数。
如果 \(n\mod 4=3\),那么 \(\frac 12x(x+1)+\frac12(n-x)(n-x+1)\) 为奇数。
这两种情况最后连的边的数量奇偶固定,结合 \(m\) 的大小可以算出答案。
后面 \(n\mod 4=2\) 和 \(n\mod 4=0\) 的情况是类似的,以 \(n\mod4=2\) 为例。
如果 \(m\) 为奇数,先手目标为让最后两个连通大小为奇数,后手要让最后两个连通块大小为偶数。那么当且仅当一开始 \(1\) 所在连通块大小和 \(n\) 所在连通块大小都是偶数,后手能必胜。
如果 \(m\) 为偶数,先手目标为让最后两个连通大小为偶数,后手要让最后两个连通块大小为奇数。那么当且仅当一开始 \(1\) 所在连通块大小和 \(n\) 所在连通块大小都是奇数,后手能必胜。
// LUOGU_RID: 135034621
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T,n,m,fa[N],sz[N];
int find(int x)
{
if(fa[x]==x)
return x;
return fa[x]=find(fa[x]);
}
int main()
{
// freopen("deadlock.in","r",stdin);
// freopen("deadlock.out","w",stdout);
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
int c=0;
for(int i=1;i<=n;i++)
fa[i]=i,sz[i]=1;
for(int i=1,u,v;i<=m;i++)
{
scanf("%d%d",&u,&v);
if(find(u)^find(v))
{
sz[find(v)]+=sz[find(u)];
fa[find(u)]=find(v);
}
}
if(find(1)==find(n))
{
puts("Second");
continue;
}
if(n%4==1)
{
if(m&1)
puts("First");
else
puts("Second");
continue;
}
if(n%4==3)
{
if(m&1)
puts("Second");
else
puts("First");
continue;
}
if(n%4==0)
{
if(m&1)
{
if(sz[find(1)]%2==1&&sz[find(n)]%2==1)
puts("Second");
else
puts("First");
}
else
{
if(sz[find(1)]%2==0&&sz[find(n)]%2==0)
puts("Second");
else
puts("First");
}
continue;
}
if(m&1)
{
// printf("odd:%d %d ",sz[find(1)]&1,sz[find(n)]&1);
if(sz[find(1)]%2==0&&sz[find(n)]%2==0)
puts("Second");
else
puts("First");
}
else
{
// printf("even:%d %d ",sz[find(1)]&1,sz[find(n)]&1);
if(sz[find(1)]%2==1&&sz[find(n)]%2==1)
puts("Second");
else
puts("First");
}
}
}
[ARC105E] Keep Graph Disconnected的更多相关文章
- ValueError: Graph disconnected: cannot obtain value for tensor Tensor
一般是Input和下面的变量重名了,导致model里面的input变成了第二次出现的Input变量,而不是最开始模型中作为输入的Input变量 改正方法:给第二个变量赋一个新名字即可
- Course Selection CodeChef - RIN
All submissions for this problem are available. Read problems statements in Mandarin Chineseand Russ ...
- HDU 1845 Jimmy’s Assignment(二分匹配)
Jimmy’s Assignment Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Other ...
- hdu1845 Jimmy’s Assignment --- 完整匹配
意甲冠军: 它需要一个特殊的图,以找到最大匹配.该图的特征是:无向图,度的每个节点3.这是一个双边连接组件(the graph is 2-edge-connected (that is, at lea ...
- HDU - 1845 Jimmy’s Assignment (二分匹配)
Description Jimmy is studying Advanced Graph Algorithms at his university. His most recent assignmen ...
- Introduction to graph theory 图论/脑网络基础
Source: Connected Brain Figure above: Bullmore E, Sporns O. Complex brain networks: graph theoretica ...
- infoq - neo4j graph db
My name is Charles Humble and I am here at QCon New York 2014 with Ian Robinson. Ian, can you introd ...
- Graph Databases—The NOSQL Phenomenon阅读笔记
本章内容着重对了NOSQL和RDBMS(关系型数据库管理系统)的不同,以及其各自背后设计时考虑的因素.然后接下来,着重讲述了NOSQL的4种分类方法.下面我们将对重要知识点进行汇总. 1.We def ...
- FB面经Prepare: Bipartite a graph
input friends relations{{1,2}, {2,3}, {3,4}} 把人分成两拨,每拨人互相不认识, 所以应该是group1{1,3}, group2{2,4} 这道题应该是ho ...
- [IR] Graph Compression
Ref: [IR] Compression Ref: [IR] Link Analysis Planar Graph From: http://www.csie.ntnu.edu.tw/~u91029 ...
随机推荐
- 【pandas小技巧】--数据转置
所谓数据转置,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理. pandas中DataFrame的转置非常简单,每个DataFrame对象 ...
- 快手Java一面11问(附参考答案)
现在已经到了面试招聘比较火热的时候,后续会分享一些面试真题供大家复习参考.准备面试的过程中,一定要多看面经,多自测! 今天分享的是一位贵州大学的同学分享的快手一面面经. 快手一面主要会问一些基础问题, ...
- 《SQL与数据库基础》07. 约束
目录 约束 常见约束案例 外键约束 删除/更新行为 本文以 MySQL 为例 约束 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据. 目的:保证数据库中数据的正确性.有效性和完整性. 分 ...
- 《Python魔法大冒险》007 被困的精灵:数据类型的解救
小鱼和魔法师深入魔法森林,树木之间流淌着神秘的光芒,每一片叶子都似乎在低语着古老的咒语.不久,他们来到了一个小湖旁,湖中央有一个小岛,岛上困着一个透明的泡泡,里面有一个悲伤的精灵. 小鱼看着那个精灵, ...
- pandas常用的数据类型,(serises和dataform)
- C中code关键字
单片机C语言code是什么作用? code的作用是告诉单片机,我定义的数据要存储在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是),因为C语言中没办法详细描述 ...
- replace批量替换、表删除数据查询用法
一. select * from baec_file where bacti='1'order by baec01; select baec02,REPLACE(baec02,'白班','A班') f ...
- PPT图片处理教程5大抠图方法:堪比PS!
PPT图片处理教程5大抠图方法:堪比PS! .如何在制作PPT的过程中提取图片.比如,当你准备给妹子做一份PPT的时候,妹子想要把N多图片放在里面,但又不想做的太LOW,这要怎么解(gai)咯?如果你 ...
- Rust WebAssembly 绑定输入类型(基于 Serde)
前言 单位有个项目要共享前后端检查策略后端用的正好也是 Rust,但是 Rust 默认的 wasm-bindgen 包中提供的转换操作非常少,像 Vec<T> <=> Arra ...
- 一个简单的C4.5算法,采用Python语言
Test1.py 主要是用来运行的 代码如下: # -*- coding: utf-8 -*- from math import log import operator import treePlot ...