hdu6165    FFF at Valentine

题意:给出一个有向图,问任意两个点 a、b,是否可以从a到b,或者从b到a。

tags:主要是题意有点绕。。 只要 tarjan 缩点成 DAG图,再 dfs 判断一下在 DAG 图中是否有一条路径包含了所有点。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 6005;int n, m;
struct Edge{ int from, to, next; } e[N*2];
int Stack[N<<2], dfn[N], low[N], Belong[N], sz[N], head[N];
bool instack[N];
int top, tot, sum, tot1;
void Addedge(int u,int v) { e[tot]={u, v, head[u]}; head[u]=tot++; }
void Tarjan(int u)
{dfn[u]=low[u]=++tot1;Stack[top++]=u, instack[u]=1;for(int i=head[u]; i!=-1; i=e[i].next) {int v=e[i].to;if(dfn[v]==0) {Tarjan(v);low[u]=min(low[u], low[v]);}else if(instack[v]) low[u]=min(low[u], dfn[v]);}if(dfn[u]==low[u]) {sum++;while(top!=0) {int en=Stack[--top];instack[en]=0;Belong[en]=sum;sz[sum]++;if(en==u) break;}}
}
vector<int > G[N<<1];
int in[N], s1;
void Init()
{mes(head, -1);  mes(Stack, 0);  mes(dfn, 0);mes(Belong, 0);  mes(sz, 0);  mes(instack, false);mes(low, 0);mes(in, 0);rep(i,0,(N<<1)-1) G[i].clear();sum = tot = tot1 = top = s1 = 0;
}
bool dfs(int u)
{++s1;if(s1==sum) return true;for(int i=0; i<G[u].size(); ++i){if(dfs(G[u][i])) return true;}--s1;return false;
}
int main()
{int T;  scanf("%d", &T);while(T--){scanf("%d%d", &n, &m);Init();int u, v;rep(i,1,m){scanf("%d%d", &u, &v);Addedge(u, v);}rep(i,1,n) if(dfn[i]==0) Tarjan(i);bool flag=0;rep(i,0,tot-1){u=Belong[e[i].from], v=Belong[e[i].to];if(u!=v)  G[u].PB(v), ++in[v];}int ro, num=0;rep(i,1,sum) if(in[i]==0) ro=i, ++num;if(num>1) flag=1;else if(!dfs(ro)) flag=1;if(flag==0) puts("I love you my love and our love save us!");else puts("Light my fire!");}return 0;
}

转载于:https://www.cnblogs.com/sbfhy/p/7413193.html

hdu6165 缩点,dfs相关推荐

  1. 解题报告:luogu P3916 图的遍历( 缩点 + DFS ? × 思维 + 反向建边 + DFS √ )

    题目链接:图的遍历 本题是一个有向图,要求每个点能到达的编号最大的点.由于是有向图,如果直接DFS如果有环就可能忽略一些点,所以我们可以直接缩点 缩点之后 在同一个强联通分量中的点可以相互到达,那么我 ...

  2. Div1 小A抓小B tarjan双连通分量缩点+dfs

    题目描述 小A和小B在一个无向图G上进行一个游戏.图G是连通的,有n个点,n条边,无重边,无自环,结点编号为1~n.游戏开始前小A在结点x,小B在结点y(x≠y).游戏开始后,小A和小B轮流进行移动( ...

  3. Wikioi 2822爱在心中(强连通缩点+dfs)

    2822 爱在心中(强连通缩点+遍历) 2822 爱在心中 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description " ...

  4. [USACO08DEC]在农场万圣节Trick or Treat on the Farm【Tarja缩点+dfs】

    题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...

  5. POJ - 3160 Father Christmas flymouse tanjar缩点构图+dfs

    传送门 题意:给你一个图,每一个点可以获得一个愉悦值,求能从某一个点出发走能得到的最大愉悦值.路径为单项的,显然不会加上负的.可以通过tanjar缩点从而形成DAG,再跑一个计划搜索即可求出. 怎么缩 ...

  6. hdu6165(拓扑排序+tarjan缩点)

    题意:就任意两个点能否到达: 解题思路:首先将图简化,比如假设图里有一个环,那么,这环内两个点肯定是能相互到达的,那么就不用考虑这环内的点了,很简单就想到用tarjan算法将环缩成一个点,然后就是判断 ...

  7. 缩点+染色+DFS codeforce467D

    题目链接:https://vjudge.net/contest/219056#problem/A 推荐博客:https://blog.csdn.net/ck_boss/article/details/ ...

  8. CodeForces999E 双dfs // 标记覆盖 // tarjan缩点

    http://codeforces.com/problemset/problem/999/E 题意 有向图    给你n个点,m条边,以及一个初始点s,问你至少还需要增加多少条边,使得初始点s与剩下其 ...

  9. *【ZOJ - 3781】Paint the Grid Reloaded(dfs求连通块缩点,bfs求最短路,建图技巧)

    题干: Leo has a grid with N rows and M columns. All cells are painted with either black or white initi ...

最新文章

  1. Linux的常用命令!
  2. 微信小程序地图标记点,点击标记点显示详细信息源码加效果图
  3. alert(1) to win 16
  4. 切诺夫界证明(Chernoff bound)
  5. 文字或者图片连续滚动
  6. SAP--DEBUG--外部断点的设置
  7. 列出连通集 (25 分)【DFS与BFS模板】
  8. Kubernetes共享使用Ceph存储
  9. git maven 发布_Maven Git发布
  10. python应用:爬虫框架Scrapy系统学习第三篇——初识scrapy
  11. 39岁阿里P9失业了,总资产1.5亿……
  12. linux 系统下 tar 的压缩与解压缩命令
  13. win10 更新 英特尔显示器音频 后显示器音箱没有声音
  14. 修改IDEA格式化单行注释 后增加空格
  15. Android扫描wifi二维码自动连接wifi
  16. 数据库周刊60丨3月国产数据库排行榜出炉;日本银行数据迁移失败致使业务宕机;阿里云RDS PG13发布;亚健康Oracle数据库故障定位;Redis最佳实践;MySQL查询优化……
  17. Python selenium 实现大麦网自动购票过程
  18. 台式电脑主板插线步骤图_台式机电源线接法图解(电脑主板接线图解高清图)...
  19. 植物大战僵尸用户存档修改(单机版)
  20. ipad云计算机,过气iPad2还能这么玩!用云电脑玩PC云游戏

热门文章

  1. Thinkphp 源码分析
  2. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习
  3. Android 颜色Color(转)
  4. R语言入门第五集 实验四:数据分析
  5. LaTeX入门第一集!LaTeX下载资源分享!LaTeX教学资源分享!TeXstudio下载资源分享!
  6. mysql server驱动_oracle、mysql、sql server等;流行数据库的链接驱动配置
  7. 第十三届计算机语言学大会,第十三届全国语音学学术会议(PCC 2018) 会议通知第3号...
  8. python编写赛车游戏单机版_使用Keras和DDPG玩赛车游戏(自动驾驶)
  9. python正则匹配_Python正则表达式初识(五)
  10. matlab矩阵乘法与打印