hdoj1814 Peaceful Commission【2-set】

题目:hdoj1814 Peaceful Commission

讲解:这里

这是这个题目要输出字典序最小的解,刚好第一种暴力的解法输出来的就是原题目的解,因为每次染色的时候先染字典序小的,所以肯定对。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#include <stack>
#include <algorithm>
using namespace std;
const int N = 8200;
bool vis[2*N];
struct TwoSet
{
    vector<int> G[2*N];
    int s[2*N],c;
    void init(int n)
    {
        for(int i=0;i<=2*n;i++)
            G[i].clear();
        memset(vis,false,sizeof(vis));
    }
    void add_Node(int x,int y)
    {
        G[x].push_back(y^1);
        G[y].push_back(x^1);
    }
    bool dfs(int x)
    {
        if(vis[x^1])
            return false;
        if(vis[x])
            return true;
        vis[x] = true;
        s[c++] = x;
        for(int i=0;i<G[x].size();i++)
        {
            if(!dfs(G[x][i]))
                return false;
        }
        return true;
    }
    bool yougth(int n)
    {
        for(int i = 0;i< 2*n;i+=2)
        {
            if(!vis[i] && !vis[i+1])
            {
                c = 0;
                if(!dfs(i))
                {
                    while(c>0)
                        vis[ s[--c] ] = false;
                    if(!dfs(i+1))
                        return false;
                }
            }
        }
        return true;
    }
};
TwoSet solve;
int main()
{
//    freopen("Input.txt","r",stdin);
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        solve.init(n);
        for(int i=0;i<m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            x--,y--;
            solve.add_Node(x,y);
        }
         if (!solve.yougth(n)) printf("NIE\n");
              else
              {
                     for (int i=0;i<(n<<1);i++)
                        if (vis[i]==1) printf("%d\n",i+1);
              }
    }
    return 0;
}
时间: 2024-10-11 01:56:57

hdoj1814 Peaceful Commission【2-set】的相关文章

中国500家企业【薪资待遇】一览

快消类: 联合利华: MKT 9500+3000元安家费 普通职位 8KX12 联合利华销售代表:底薪加提成,总体一般,一般能拿到5K以上 宝洁:本8600.硕9700.博10500发14个月 --11年数据 欧莱雅 MKT:6.6K X 13 --11年数据 玛氏中国 地点北京,年收入12000*13 税前 ---11年 百威英博 地点主要在上海,很多时间是全国转 年收入8500*13 --11年 箭牌:普通职位4400×13(09年) 管理培训生 9600*15 --11年 卡夫 上海 45

【C】【第一课】

[_(:з)∠)_咸_(:з)∠)_鱼_(:з)∠)_本_(:з)∠)_鱼_(:з)∠)] [知识梳理] [典例分析] [第一题] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 思路:动用高中的数学知识可知这是一个可以口答排列问题P(3;4)=4×3×2=24. 那么从排列的原理考虑,我们的程序实现思路大致是: ①4挑一放在第一位 ②剩下的3挑一放在第二位 ③剩下的2挑一放在第三位 要实现以上步骤,需要一个遍历所有三位数和筛选出无重复三位数的过程. 我们可以

【codeforces 718E】E. Matvey&#39;s Birthday

题目大意&链接: http://codeforces.com/problemset/problem/718/E 给一个长为n(n<=100 000)的只包含‘a’~‘h’8个字符的字符串s.两个位置i,j(i!=j)存在一条边,当且仅当|i-j|==1或s[i]==s[j].求这个无向图的直径,以及直径数量. 题解:  命题1:任意位置之间距离不会大于15. 证明:对于任意两个位置i,j之间,其所经过每种字符不会超过2个(因为相同字符会连边),所以i,j经过节点至多为16,也就意味着边数至多

【c/c++】内存分配大小

测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小.单位:字节 1. 数组名与变量名的区别 int main() { char q[] = "hello"; cout << "q:" << sizeof(q) << endl; char *mq = q; cout << "mq:" << sizeof(mq) << endl; const char *

【 js 基础 】Javascript “继承”

是时候写一写 "继承"了,为什么加引号,因为当你阅读完这篇文章,你会知道,说是 继承 其实是不准确的. 一.类1.传统的面向类的语言中的类:类/继承 描述了一种代码的组织结构形式.举个例子:"汽车"可以被看作是"交通工具"的一种特例.我们可以定义一个 Vehicle 类和一个 Car 类来对这种关系进行描述.Vehicle 的定义可能包含引擎.载人能力等,也就是 所有交通工具,比如飞机.火车和汽车等都有的通用的功能描述.在对 Car 类进行定义的

服务 Service【经典案例】

2017-1-19 Activity public class MainActivity extends ListActivity {     private boolean flag;//线程结束条件     public static final String ACTION_TEST_SERVICE = "com.bqt.service.TEST_SERVICE";     private MyServiceConnection conn;     private IBinderI

【N版】openstack——走进云计算(一)

[N版]openstack--走进云计算 一.云计算 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池(资源包括:网络.服务器.存储.应用软件.服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互. 1.1云计算的特点和优势 1)云计算是一种使用模式 2)云计算必须通过网络访问 3)弹性计算,按需付费 1.2在云计算之前的模式或技术 1)IDC托管 2)IDC租用 3)虚拟主机(卖空间的) 4)VPS:虚拟专用

【N版】openstack——认证服务keystone(三)

[N版]openstack--认证服务keystone 一.keystone介绍 1.1keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理. 用户认证:用户权限与用户行为跟踪 服务目录:提供一个服务目录,包括所有服务项与相关API的端点 主要涉及如下概念: User:  

【N版】openstack——镜像服务glance(四)

[N版]openstack--镜像服务glance 一.openstack之glance镜像服务 1.1glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(glance-registry及image store)来完成诸如镜像的查找.获取.上传.删除等操作,api监听端口9292. glance-registry:云系统的镜像注册服务,用于与mysql数据库交互,存储或获取镜像的元数据(metadata