1128

写的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)的更多相关文章

  1. 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS ...

  2. ACM:图的BFS,走迷宫

    题目: 一个网格迷宫由n行m列的单元格组成,每一个单元格要么是空地(用1表示),要么是障碍物(用0来表示).你的任务是找一条从起点到终点的最短移动序列,当中UDLR分别表示往上.下.左.右移动到相邻单 ...

  3. 图之BFS和DFS遍历的实现并解决一次旅游中发现的问题

    这篇文章用来复习使用BFS(Breadth First Search)和DFS(Depth First Search) 并解决一个在旅游时遇到的问题. 关于图的邻接表存储与邻接矩阵的存储,各有优缺点. ...

  4. 图的BFS代码

    图是严蔚敏书上P168的图, 图的邻接表存储,DFS可以看以前写的文章:http://www.cnblogs.com/youxin/archive/2012/07/28/2613362.html ]; ...

  5. 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 ...

  6. 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 ...

  7. UVA-10047 The Monocycle (图的BFS遍历)

    题目大意:一张图,问从起点到终点的最短时间是多少.方向转动也消耗时间. 题目分析:图的广度优先遍历... 代码如下: # include<iostream> # include<cs ...

  8. CodeForces 131D【图特性+BFS】

    题意: 只有一个环,然后环都是0(环缩点相当于树的根),然后其余的输出到根的距离 思路: 可以从度为1的 开始搜 把那些分支全标记掉,然后再取没有标记掉的,BFS一下搞出距离. 具体这个标记: 倒着搜 ...

  9. 算法学习记录-图(DFS BFS)

    图: 目录: 1.概念 2.邻接矩阵(结构,深度/广度优先遍历) 3.邻接表(结构,深度/广度优先遍历) 图的基本概念: 数据元素:顶点 1.有穷非空(必须有顶点) 2.顶点之间为边(可空) 无向图: ...

随机推荐

  1. oracle中事务处理

    事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败. 事务和锁 当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构 ...

  2. iOS10和Xcode8适配

    1 Xib文件的注意事项 使用Xcode8打开xib文件后,会出现下图的提示. 大家选择Choose Device即可. 之后大家会发现布局啊,frame乱了,只需要更新一下frame即可.如下图 注 ...

  3. Careercup - Google面试题 - 4857362737266688

    2014-05-04 00:10 题目链接 原题: Write a function return an integer that satisfies the following conditions ...

  4. android开发 socket接收图片并保存

    逻辑:接收到socket之后需要将socket发送的图片数据保存下来并通知handler更新界面 关键代码: public void readImage(Socket socket) { try { ...

  5. python 安装 easy_intall 和 pip python无root权限安装

    http://www.cnblogs.com/haython/p/3970426.html easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安装e ...

  6. 循环队列实现(C++) Ring Buffer

    循环队列:队列有着先入先出的特性.但是对于队列如果删除队头以后剩下的空间将不会被释放,又由于队列只能由队尾插入这就导致被删除部分的空间被浪费.解决这个问题就是循环队列.循环队列顾名思义就是将队列串起来 ...

  7. QualityCenter10+Oracle10.2.1.0.1+Win2003SP2企业版安装步骤

    HpQualityCenter10+Oracle10.2.1.0.1+Win2003SP2企业版安装步骤: 1.点击setup.exe,等待,知道出现以下界面,然后按“下一步” 2.出现如下界面,接受 ...

  8. 【MongoDb--初入江湖】windows下安装MongoDb

    一.windows下安装MongoDb http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/

  9. uva 10859

    刘书例题  树形dp #include <cstdio> #include <cstdlib> #include <cmath> #include <map& ...

  10. NET Framework 4 中的新 C# 功能

    http://msdn.microsoft.com/zh-cn/magazine/ff796223.aspx C# 编程语言自 2002 年初次发布以来已经有了极大的改善,可以帮助程序员编写更清晰易懂 ...