【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

根据题意:先明确以下规则:
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的更多相关文章

  1. 【Henu ACM Round#16 F】Om Nom and Necklace

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀. 然后s其实就是pre[i]中 ...

  2. 【Henu ACM Round#16 E】Paths and Trees

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 感觉很像一道最短路. 然后就试了一发. 结果真的是.. 只要用一个优先队列优化的dijkstra算法求出每个点的最短路上的前一个点是 ...

  3. 【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 ...

  4. 【Henu ACM Round#16 A】 Bear and Game

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 看看什么时候t[i]-t[i-1]>15. 输出t[i-1]+15就好. 不存在这样的i就输出min(t[n]+15,90) ...

  5. 【Henu ACM Round#16 B】 Bear and Colors

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] O(n^2)枚举每一个区间. 然后维护这个区间里面的"统治数字"是什么. 对于每个区间cnt[统治数字]++; ...

  6. 【Henu ACM Round#24 E】Connected Components

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...

  7. 【Henu ACM Round#24 D】Iterated Linear Function

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一 ...

  8. 【Henu ACM Round#24 C】Quiz

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...

  9. 【Henu ACM Round#24 B】Gargari and Bishops

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果写过n皇后问题. 肯定都知道 某个点(i,j)和它在同一条对角线上的点分别是i+j的值和i-j的值相同的点. 然后会发现选择的两 ...

随机推荐

  1. POJ 3207 Ikki&#39;s Story IV - Panda&#39;s Trick(2-sat)

    POJ 3207 Ikki's Story IV - Panda's Trick id=3207" target="_blank" style=""& ...

  2. 每一个程序猿都应该用MBP

    换笔记本的想法非常久了.前段时间换工作就想看换工作之后是什么情况吧. 可能工作配的笔记本就是MBP.后来发现是想多了,新工作的笔记本是Thinkpad X240. 配置全然够用了,8G内存+128G的 ...

  3. 51nod-1296: 有限制的排列

    [传送门:51nod-1296] 简要题意: 有一个集合,集合中的数为1到n 给出a限制条件,a[i]表示第a[i]位置的数要比相邻位置的数要小 给出b限制条件,b[i]表示第b[i]位置的数要比相邻 ...

  4. Insert Data with C# Driver

    https://docs.mongodb.com/getting-started/csharp/insert/ OverView You can use the InsertOneAsync meth ...

  5. SharePoint InfoPath 保存无法发布问题

    设计完表单以后提示以下错误 错误描述 InfoPath无法保存下列表单:******* 此文档库已被重命名或删除,或者网络问题导致文件无法保存.如果此问题持续存在,请于网络管理员联系. 可参考网站 & ...

  6. 3339: Rmq Problem

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1269  Solved: 665[Submit][Status][Discuss] Descripti ...

  7. 976 C. Nested Segments

    You are given a sequence a1, a2, ..., an of one-dimensional segments numbered 1 through n. Your task ...

  8. echarts 初始化失败问题。

    dom 实例容器,一般是一个具有高宽的div元素. 注:如果div是隐藏的,ECharts 可能会获取不到div的高宽导致初始化失败,这时候可以明确指定div的style.width和style.he ...

  9. 百度IOT

    万物互联 http://www.jianshu.com/p/3d9846bf42bd 百度天工

  10. Ubuntu14环境下minigui安装问题记录--object.lo错误

    minigui3.0.12在Ubuntu14上面编译只是去?出现这个错误:object.h:275:9: error: incompatible types when assigning to typ ...