强联通 poj 2762
t个样例 (注意清零)
n个点m条边 有向;
任意2点是否能从a->b或者b->a;
Yes No
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<math.h>
#include<stack> using namespace std; #define MAXN 20000
#define MAXN1 10000
int cnt,k,num;
struct edg
{
int next,to,fr; }x[MAXN+];
int head[MAXN1],dfn[MAXN1],low[MAXN1],f[MAXN1];
bool vis[MAXN1];
int in[MAXN1]; void add(int u,int v)
{
x[cnt].fr=u;
x[cnt].next=head[u];
x[cnt].to=v;
head[u]=cnt++;
}
stack<int>s; void dfs(int u)
{
low[u]=dfn[u]=k++;
s.push(u);
vis[u]=;
int i;
for(i=head[u];i!=-;i=x[i].next)
{
if(!dfn[x[i].to])
{
dfs(x[i].to);
low[u]=min(low[u],low[x[i].to]);
}
else if(vis[x[i].to])
low[u]=min(low[u],dfn[x[i].to]);
}
if(low[u]==dfn[u]) //强联通分量
{
num++;
while(!s.empty())
{
int now=s.top();
s.pop();
f[now]=num; //新的点
vis[now]=;
if(u==now)break;
}
}
}
queue<int>q1; int judge()
{
int i;
while(!q1.empty())q1.pop(); //很重要
for(i=;i<=num;i++)
{
if(!in[i])
q1.push(i);
}
if(q1.size()>)return ; //入度为0的点1个 while(!q1.empty())
{
int now=q1.front();
q1.pop();
for(i=head[now];i!=-;i=x[i].next)
{
in[x[i].to]--;
if(!in[x[i].to])
q1.push(x[i].to);
}
if(q1.size()>)return ;
}
return ;
} int main()
{
int t;
scanf("%d",&t); while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int i;
memset(head,-,sizeof(head));
cnt=;
for(i=;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
}
k=;
num=;
while(!s.empty())s.pop();
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vis,,sizeof(vis));
memset(f,,sizeof(f));
for(i=;i<=n;i++)
{
if(!dfn[i])
dfs(i);
}
int en=cnt;
memset(head,-,sizeof(head));
memset(in,,sizeof(in));
cnt=;
for(i=;i<en;i++) //重新建图
{
int a,b;
a=f[x[i].fr];
b=f[x[i].to];
if(a!=b)
{
add(a,b);
in[b]++;
}
}
if(judge())
printf("Yes\n");
else
printf("No\n");
} return ;
}
强联通 poj 2762的更多相关文章
- POJ 1236-Network of Schools (图论-有向图强联通tarjan)
题目链接:http://poj.org/problem?id=1236 题目大意:N(2<N<100)个学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输.问题 ...
- POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)
题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认 ...
- 【POJ 1236 Network of Schools】强联通分量问题 Tarjan算法,缩点
题目链接:http://poj.org/problem?id=1236 题意:给定一个表示n所学校网络连通关系的有向图.现要通过网络分发软件,规则是:若顶点u,v存在通路,发给u,则v可以通过网络从u ...
- POJ 2186 Popular Cows (强联通)
id=2186">http://poj.org/problem? id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 655 ...
- POJ 2186 Popular Cows(强联通分量)
题目链接:http://poj.org/problem?id=2186 题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种 ...
- (连通图 缩点 强联通分支)Popular Cows -- poj --2186
http://poj.org/problem?id=2186 Description Every cow's dream is to become the most popular cow in th ...
- POJ 2186 Popular cows(Kosaraju+强联通分量模板)
题目链接:http://poj.org/problem?id=2186 题目大意:给定N头牛和M个有序对(A,B),(A,B)表示A牛认为B牛是红人,该关系具有传递性,如果牛A认为牛B是红人,牛B认为 ...
- POJ 1904 King's Quest 强联通分量+输入输出外挂
题意:国王有n个儿子,现在这n个儿子要在n个女孩里选择自己喜欢的,有的儿子可能喜欢多个,最后国王的向导给出他一个匹配.匹配有n个数,代表某个儿子和哪个女孩可以结婚.已知这些条件,要你找出每个儿子可以和 ...
- POJ 3180 The Cow Prom(强联通)
题目大意: 约翰的N(2≤N≤10000)只奶牛非常兴奋,因为这是舞会之夜!她们穿上礼服和新鞋子,别上鲜花,她们要表演圆舞. 只有奶牛才能表演这种圆舞.圆舞需要一些绳索和一个圆形的 ...
随机推荐
- AC日记——单词翻转 1.7 27
27:单词翻转 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个句子(一行),将句子中的每一个单词翻转后输出. 输入 只有一行,为一个字符串,不超过500个字符.单词之间以空 ...
- 如何用patch打补丁
patch -p1 < *.patch -p1代表忽略第一层目录(patch文件中的).
- ADB server didn't ACK 问题解决
在命令行中运行adb shell 出现如下错误提示 C:\Documents and Settings\Administrator>adb shelladb server is out of d ...
- 装完Centos7提示Initial setup of CentOS Linux 7 (core)(转载)
http://www.th7.cn/system/lin/201603/156762.shtml
- 如何定位web前后台的BUG
一.对系统整体的了解 Server端:jsp+Servlet+json 数据库:sql.MySQL.oracle等 前台: 涉及到 jstl,jsp,js,css,htm等方面 后台:servlet, ...
- Python的高级特性12:类的继承
在面向对象的程序设计中,继承(Inheritance)允许子类从父类那里获得属性和方法,同时子类可以添加或者重载其父类中的任何方法.在C++和Java的对象模型中,子类的构造函数会自动调用父类的构造函 ...
- 小心 CSS3 Transform 引起的 z-index "失效"
https://www.douban.com/note/343402554/ http://www.jb51.net/css/255811.html 最后我直接removeClass;把transfo ...
- Maven 常用命令, 备忘
Maven在现在的Java项目中有非常重要的地位, Maven已经不是Ant这样仅仅用于构建, 首先, 它是一个构建工具, 把源代码编译并打包成可发布应用的构件工具其次, 它是一个依赖管理工具, 集中 ...
- squid代理服务器根据代理IP路由
import os ips = os.popen("""ifconfig |grep 'inet addr:'|awk '{print $2}'| sed '$d'| s ...
- DefaultFilesMiddleware中间件如何显示默认页面
DefaultFilesMiddleware中间件如何显示默认页面 DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认 ...