【Henu ACM Round#16 C】Graph and String
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
根据题意:先明确以下规则:
1.如果两个点之间没有边,那么这两个点只能是a或c,且不能相同
2.如果两个点之间有边,那么他们之间的差的绝对值那么对于点i,如果它和所有的点都相连了,那么就干脆把他变成b.
这样其他点无论选什么都和它没有关系,其他点选什么都可以了
接下里,找到任意一个点j,且点j没有和所有的点相连。
显然这个点只能为a或c,因为它和某个点之间没有边。【规则1】
那么我们就让这个点j设置为a;
①然后对于和j相连的所有点k,且点k不为b(即k不与其他所有点相连),那么点k
只能为a或c(因为k和某个点之间没有边)【规则1】
而根据【规则2】可知点k只能为a
②对于和j不相连的所有点k,显然k只能为c
根据①和②
会发现所有的点都已经染上色了
而点j为a或c其实不影响答案。
所以再O(n^2)根据规则判断一下这个染色是否可行就好了。
【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 500+10;
int c[N],n,m,chu[N+10];
bool b[N][N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0);
#ifdef LOCAL_DEFINE
freopen("rush.txt","r",stdin);
#endif
cin >> n >> m;
for (int i = 1;i <= m;i++){
int x,y;
cin >> x >> y;
b[x][y] = b[y][x] = true;
chu[x]++;chu[y]++;
}
for (int i = 1;i <= n;i++)
if (chu[i]==(n-1))
c[i] = 2;
for (int i = 1;i <= n;i++)
if (c[i]!=2){
c[i] = 1;
for (int j = 1;j <= n;j++)
if (b[i][j] && c[j]!=2){
c[j] = 1;
}else if (i!=j && !b[i][j]){
c[j] = 3;
}
break;
}
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
if (b[i][j]){
if (abs(c[i]-c[j])>1) return cout<<"No"<<endl,0;
}else if (i!=j){
if (abs(c[i]-c[j])<=1) return cout<<"No"<<endl,0;
}
cout<<"Yes"<<endl;
for (int i = 1;i <= n;i++){
if (c[i]==1) cout<<'a';
if (c[i]==2) cout<<'b';
if (c[i]==3) cout<<'c';
}
return 0;
}
【Henu ACM Round#16 C】Graph and String的更多相关文章
- 【Henu ACM Round#16 F】Om Nom and Necklace
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀. 然后s其实就是pre[i]中 ...
- 【Henu ACM Round#16 E】Paths and Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 感觉很像一道最短路. 然后就试了一发. 结果真的是.. 只要用一个优先队列优化的dijkstra算法求出每个点的最短路上的前一个点是 ...
- 【Henu ACM Round#16 D】Bear and Two Paths
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先搞一条a到b的路径 a c x3 x4 x5....xn-2 d b 然后第二个人的路径可以这样 c a x3 x4 x5...x ...
- 【Henu ACM Round#16 A】 Bear and Game
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 看看什么时候t[i]-t[i-1]>15. 输出t[i-1]+15就好. 不存在这样的i就输出min(t[n]+15,90) ...
- 【Henu ACM Round#16 B】 Bear and Colors
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] O(n^2)枚举每一个区间. 然后维护这个区间里面的"统治数字"是什么. 对于每个区间cnt[统治数字]++; ...
- 【Henu ACM Round#24 E】Connected Components
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...
- 【Henu ACM Round#24 D】Iterated Linear Function
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一 ...
- 【Henu ACM Round#24 C】Quiz
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...
- 【Henu ACM Round#24 B】Gargari and Bishops
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果写过n皇后问题. 肯定都知道 某个点(i,j)和它在同一条对角线上的点分别是i+j的值和i-j的值相同的点. 然后会发现选择的两 ...
随机推荐
- <九度 OJ>题目1545:奇怪的连通图
题目描写叙述: 已知一个无向带权图,求最小整数k.使仅使用权值小于等于k的边,节点1能够与节点n连通. 输入: 输入包括多组測试用例.每组測试用例的开头为一个整数n(1 <= n <= 1 ...
- 【我所认知的BIOS】系列blog整理 1.23.2016.zip
这几年来,蛮多小伙伴都给我发邮件拿PDF版本号. 几年前写的文章格式什么的实在是太粗糙.近期我把全部的文章都整理了一下.事实上该想法已经早就有了,仅仅是近期才開始空暇.如今我把全部的文章整理好了以后上 ...
- DDos游戏行业受攻击最多
游戏行业遭遇DDOS攻击现状. 游戏一直是最易遭受黑客攻击的行业,高居全年DDOS攻击的48%.大规模攻击居多,平均值均超过100Gbps,攻击峰值急速上升,同比2015年增加了137.1%,其中攻击 ...
- ubuntu16.04下snort的安装(官方文档安装)(图文详解)
不多说,直接上干货! 最近为了科研,需要安装和使用Snort. snort的官网 https://www.snort.org/ Snort作为一款优秀的开源主机入侵检测系统,在windows和Linu ...
- java9新特性-18-统一的JVM日志系统
1.官方Feature 158: Unified JVM Logging 271: Unified GC Logging 2.使用说明 日志是解决问题的唯一有效途径:曾经很难知道导致JVM性能问题和导 ...
- PostgreSQL Replication之第四章 设置异步复制(5)
4.5 使流复制更健壮 当连接到master时,slave要做的第一件事情是赶上master.但是,这会一直工作吗?我们已经看到,我们可以使用由基于流和基于文件组成的混合设置.这给了我们一些额外的安全 ...
- <Sicily>Brackets Matching
一.题目描述 Let us define a regular brackets sequence in the following way: Empty sequence is a regular s ...
- <Sicily>数字反转
一.题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 二.输入 输入共 1 行, ...
- js字符串首字母转为大写
function initialsLetterUpperCase(arr){ if(Array.isArray(arr)){ return arr.map(function(val,index,arr ...
- 第一性原理:First principle thinking是什么?
作者:沧海桑田链接:https://www.zhihu.com/question/40550274/answer/225236964来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...