题目   http://hihocoder.com/problemset/problem/1121

无向图上有N个点,两两之间可以有连线,共有M条连线

如果对所有点进行涂色(白/黑),判定是否存在一个合理的涂色方案,使得图上每一条连线两端的顶点颜色都不相同

  思路  

1. 深度优先搜索:把图上所有的点都遍历一遍

  代码注意点  

1. 因为不想用二维数组,采用vector<vector<int>>的类型。这时要注意初始化方式:

不该用的方式

//1. 初始化
vector<int> tmp(N);
vector<vector<int>> data(N, tmp);
//2. 访问方式
cin>>data[i][j]

合适的方式

//1. 初始化
vector<vector<int>> data;
data.resize(N);
//2. 访问方式
int x, y;
cin>>x>>y;
data[x].push_back(y);
data[y].push_back(x);

2. vector的resize/reserve函数

1) void reserve (size_type n);

  • 预分配存储区大小,即capacity,但是没有对内存初始化,不能有效地访问
  • 实际分配的大小可能大于n,即capacity >= n

2) void resize (size_type n, value_type val = 0);

  • 重新分配大小,vector中现有的元素个数 size()
  • n <= 原始大小,则减少size()值,保存前n个元素
  • n >= 原始大小,则插入元素(默认为0, 或设置的 val),使size()达到n
  • n > capacity(),则重新分配存储空间

源码  

 #include <iostream>
#include <vector>
using namespace std; bool setPeople(vector<vector<int>>& date, vector<int>& people, int index)
{
int num = date[index].size();
for (int i = ; i < num; i++)
{
int j = date[index][i];
if (people[j] == )//还没有设置过
{
people[j] = -people[index];
if (!setPeople(date, people, j))
return false;
}
else if (people[j] == people[index])//已经设置过, 不符合要求
return false;
}
return true;
}
int main()
{
int T, N, M, i;//N个人,M对
cin >> T;
vector<int> people;//0: 没有设置,1:红色 2:黑色
vector<vector<int>> date;
while (T-- > )
{
cin >> N >> M;
people.clear();
date.clear();
people.resize(N + , );
date.resize(N + ); for (i = ; i < M; i++)
{
int a, b;
cin >> a >> b;
date[a].push_back(b);
date[b].push_back(a);
}
for (i = ; i <= N; i++)
{
if (people[i] == )//没有设置过
{
people[i] = -;
if (!setPeople(date, people, i))//有出现错误
break;
}
}
if (i != N + )
cout << "Wrong" << endl;
else
cout << "Correct" << endl;
}
return ;
}

【hihoCoder】1121:二分图一·二分图判定的更多相关文章

  1. HihoCoder 1121 二分图一•二分图判定

    二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Nettle,从这个星期开始由我来完成我们的Weekly. 新年回 ...

  2. hihoCoder #1127 : 二分图二·二分图最小点覆盖和最大独立集

    #1127 : 二分图二·二分图最小点覆盖和最大独立集 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上次安排完相亲 ...

  3. HihoCoder1127 二分图三·二分图最小点覆盖和最大独立集

    二分图三·二分图最小点覆盖和最大独立集 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上次安排完相亲之后又过了挺长时间,大家好像都差不多见过面了.不过相亲这个事不是说 ...

  4. HihoCoder 1121二分图一•二分图判定

    背景: 个名字,表示这两个人有一场相亲.由于姑姑年龄比较大了记性不是太好,加上相亲的人很多,所以姑姑一时也想不起来其中有些人的性别.因此她拜托我检查一下相亲表里面有没有错误的记录,即是否把两个同性安排 ...

  5. hihoCoder#1121(二分图判定)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Nettle,从这个星期开始由我来完成我们的Weekly. 新年回家,又到了一年一度大龄 ...

  6. Hihocoder #1121 二分图一•二分图判定( bfs或者dfs搜索实现 搜索的过程中进行 节点标记 *【模板】)

    对于拿到的相亲情况表,我们不妨将其转化成一个图.将每一个人作为一个点(编号1..N),若两个人之间有一场相亲,则在对应的点之间连接一条无向边.(如下图) 因为相亲总是在男女之间进行的,所以每一条边的两 ...

  7. hihoCoder 1393 网络流三·二分图多重匹配(Dinic求二分图最大多重匹配)

    #1393 : 网络流三·二分图多重匹配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小H ...

  8. 【POJ】1486:Sorting Slides【二分图关键边判定】

    Sorting Slides Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5390   Accepted: 2095 De ...

  9. 【hihocoder 1122】二分图二•二分图最大匹配之匈牙利算法

    [Link]:https://hihocoder.com/problemset/problem/1122 [Description] [Solution] 二分图匹配,匈牙利算法模板题; 这里我先把染 ...

随机推荐

  1. myeclipse2015卸载、安装、破解全过程-----myeclipse2015

    myeclipse2015安装以及破解步骤: 下载地址:myeclipse2015-->https://pan.baidu.com/s/1i4RFCBb   密码:qxsu 破解文件地址--&g ...

  2. linux通过挂载系统光盘搭建本地yum仓库的方法

    1.挂载光盘 [root@localhost ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 /media下的cdrom ...

  3. 12/13 Oracle连接报错

    1.oracle连接错误the network adapter could not establish the connection参考:http://blog.sina.com.cn/s/blog_ ...

  4. php定界符<<<EOF讲解(转)

    Heredoc技术.可用来输出大段的html和javascript脚本 1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西: 2.在PHP定界符中的任何特殊字符都不需要转义:  ...

  5. locate 最快的查找文件的命令 NB

    我见过最NB的查找文件最快的命令 [root@NB data]# locate teamviewer. /data/Software/teamviewer.i686.rpm /home/ok/.loc ...

  6. mysql的查询、子查询及连接查询

    >>>>>>>>>> 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组). ...

  7. the beginner's guide to idapython

    之前做的一个idapython的翻译,http://bbs.pediy.com/showthread.php?p=1432784#post1432784

  8. C#ListBox对Item进行重绘,包括颜色

    别的不多说了,上代码,直接看 首先设置这行,或者属性窗口设置,这样才可以启动手动绘制,参数有三个 Normal: 自动绘制 OwnerDrawFixed:手动绘制,但间距相同 OwnerDrawVar ...

  9. java中Map和List初始化的两种方法

    第一种方法(常用方法): //初始化List List<string> list = new ArrayList</string><string>(); list. ...

  10. 织梦cms更新新建的栏目提示:DedeTag Engine Create File False:C:/phpStudy/WWW/

    这个问题怎么解决呢?只是更换了一下栏目名称.增加了新的栏目,结果就不行了. 问题原因: 新建的栏目没有"列表命名规则",导致cms解析的时候,出现解析错误. 解决办法 在下图填入: ...