1128. Partition into Groups(图着色bfs)
写的dfs貌似不太对 bfs重写
用bfs将图进行黑白染色 如果有超过一个与自己颜色相同的点 就把该点存入栈中 最后处理栈中的点 判断此点是否合法 不合法 取反 取反后再判断相邻点是否合法 不合法再存入栈中 直到栈为空
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<queue>
using namespace std;
#define N 80010
vector<int>ed[N];
int n;
int vis[N],d[N],f[N],g;
void bfs(int s)
{
int i;
queue<int>q;
q.push(s);
vis[s] = ;
while(!q.empty())
{
int u = q.front();
q.pop();
int k = vis[u];
int num = ;
for(i = ; i < (int)ed[u].size() ;i++)
{
int v = ed[u][i];
if(!vis[v])
{
vis[v] = -k;
q.push(v);
}
else if(vis[v]!=-k)
{
num++;
}
}
if(num>)
{
g++;
d[g] = u;
}
}
}
int main()
{
int m,i,j;
scanf("%d",&n);
for(i = ; i <= n ; i++)
{
scanf("%d",&m);
for(j = ; j <= m ; j++)
{
int a;
scanf("%d",&a);
ed[i].push_back(a);
}
}
for(i = ; i <= n ; i++)
{
if(!vis[i]&&!f[i])
{
bfs(i);
}
}
for(i = ; i <= g ; i++)
{
int v = d[i],num=;
for(j = ; j < (int)ed[v].size() ; j++)
{
int x = ed[v][j];
if(vis[x]==vis[v])
num++;
}
if(num>)
{
vis[v] = -vis[v];
for(j = ; j < (int)ed[v].size() ; j++)
{
int x = ed[v][j],oo=;
for(int p = ; p < (int)ed[x].size() ; p++)
if(vis[x]==vis[ed[x][p]])
{
oo++;
}
if(oo>)
{
g++;
d[g] = x;
}
}
}
}
int num = ,o=-,t;
for(i = ; i <= n ; i++)
if(vis[i]==)
{
if(i==)
o = ;
num++;
}
if(num<n-num)
{
t = ;
}
else if(num==n-num)
{
t = o;
}
else
{
num = n-num;
t = -;
}
printf("%d\n",num);
for(i = ; i <= n ; i++)
if(vis[i]==t)
printf("%d ",i);
puts("");
return ;
}
1128. Partition into Groups(图着色bfs)的更多相关文章
- 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS ...
- ACM:图的BFS,走迷宫
题目: 一个网格迷宫由n行m列的单元格组成,每一个单元格要么是空地(用1表示),要么是障碍物(用0来表示).你的任务是找一条从起点到终点的最短移动序列,当中UDLR分别表示往上.下.左.右移动到相邻单 ...
- 图之BFS和DFS遍历的实现并解决一次旅游中发现的问题
这篇文章用来复习使用BFS(Breadth First Search)和DFS(Depth First Search) 并解决一个在旅游时遇到的问题. 关于图的邻接表存储与邻接矩阵的存储,各有优缺点. ...
- 图的BFS代码
图是严蔚敏书上P168的图, 图的邻接表存储,DFS可以看以前写的文章:http://www.cnblogs.com/youxin/archive/2012/07/28/2613362.html ]; ...
- PAT A1076 Forwards on Weibo (30 分)——图的bfs
Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...
- PAT A1021 Deepest Root (25 分)——图的BFS,DFS
A graph which is connected and acyclic can be considered a tree. The hight of the tree depends on th ...
- UVA-10047 The Monocycle (图的BFS遍历)
题目大意:一张图,问从起点到终点的最短时间是多少.方向转动也消耗时间. 题目分析:图的广度优先遍历... 代码如下: # include<iostream> # include<cs ...
- CodeForces 131D【图特性+BFS】
题意: 只有一个环,然后环都是0(环缩点相当于树的根),然后其余的输出到根的距离 思路: 可以从度为1的 开始搜 把那些分支全标记掉,然后再取没有标记掉的,BFS一下搞出距离. 具体这个标记: 倒着搜 ...
- 算法学习记录-图(DFS BFS)
图: 目录: 1.概念 2.邻接矩阵(结构,深度/广度优先遍历) 3.邻接表(结构,深度/广度优先遍历) 图的基本概念: 数据元素:顶点 1.有穷非空(必须有顶点) 2.顶点之间为边(可空) 无向图: ...
随机推荐
- php输出错误屏蔽的函数
/** * 设置默认值方法 * @param mult $data * @param string $key key值 * @param string $default 默认值 */ public s ...
- c++ 从标注输入流读取行
#include <string.h> #include <iostream> #include <vector> #include <stdio.h> ...
- jQuery基于ajax实现星星评论代码
本文实例讲述了jQuery基于ajax实现星星评论代码.分享给大家供大家参考.具体如下: 这里使用jquery模仿点评网的星星评论功能,Ajax评论模块,鼠标点击星星即可评价,下边是分数,可以点击后给 ...
- IE6兼容inline-block的方法
或许有朋友会对IE不支持 display:inline-block 属性,表示疑问或者反对.说:“我在 IE 中对 a 或者 span 等内联元素使用 display:inline-block 一直是 ...
- 【BZOJ】【1385】【Baltic2000】Division expression
欧几里得算法 普通的求个gcd即可……思路题 因为要求尽量是整数……所以 $\frac{x_1}{x_2*x_3*x_4*....*x_n}$是最大的结果了,因为$x_2$必须为分母,$x_1$必须为 ...
- nodeJS实战
github代码托管地址: https://github.com/Iwillknow/microblog.git 根据<NodeJS开发指南>实例进行实战{{%并且希望一步步自己能够逐步将 ...
- pureftpd安装配置-pureftp参数详解(一)
1. 下载 #cd /usr/local/src/ #wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.30.tar.g ...
- 浅析白盒审计中的字符编码及SQL注入
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
- 【hadoop2.6.0】用C++ 编写mapreduce
hadoop通过hadoop streaming 来实现用非Java语言写的mapreduce代码. 对于一个一点Java都不会的我来说,这真是个天大的好消息. 官网上hadoop streaming ...
- Oracle函数+for循环
create or replace function FilterMinganci(str in varchar) return varchar2 is filterWorld varchar2(10 ...