E 定向 牛客练习赛25
tarjan
父节点和子节点
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cmath> 4 #include <cstring> 5 #include <time.h> 6 #include <string> 7 #include <set> 8 #include <map> 9 #include <list> 10 #include <stack> 11 #include <queue> 12 #include <vector> 13 #include <bitset> 14 #include <ext/rope> 15 #include <algorithm> 16 #include <iostream> 17 using namespace std; 18 #define ll long long 19 #define minv 1e-6 20 #define inf 1e9 21 #define pi 3.1415926536 22 #define E 2.7182818284 23 const ll mod=1e9+7;//998244353 24 const int maxn=1e6+10; 25 26 struct node 27 { 28 int d,pos,c; 29 node* next; 30 }*e[maxn]; 31 32 bool vis[maxn]={0}; 33 int dfn[maxn],low[maxn],num=0,g=0,n,cond[maxn],st[maxn],fa[maxn]; 34 35 void dfs(int d) 36 { 37 int dd; 38 node* p=e[d]; 39 dfn[d]=low[d]=++num; 40 vis[d]=1; 41 st[++g]=d; 42 while (p) 43 { 44 dd=p->d; 45 if (!vis[dd]) 46 { 47 fa[dd]=d; 48 dfs(dd); 49 low[d]=min(low[d],low[dd]); 50 cond[p->pos]=p->c; 51 } 52 //lack whether in stack (not necessarily) 53 else if (fa[d]!=dd) 54 { 55 low[d]=min(low[d],dfn[dd]); 56 if (dfn[d]>dfn[dd]) 57 cond[p->pos]=p->c; 58 } 59 p=p->next; 60 } 61 if (dfn[d]==low[d]) 62 { 63 if (g!=n || st[1]!=d) 64 { 65 printf("impossible"); 66 exit(0); 67 } 68 } 69 } 70 71 int main() 72 { 73 node* p; 74 int m,i,x,y; 75 scanf("%d%d",&n,&m); 76 for (i=1;i<=m;i++) 77 { 78 scanf("%d%d",&x,&y); 79 p=(node*) malloc (sizeof(node)); 80 p->d=y; 81 p->pos=i; 82 p->c=0; 83 p->next=e[x]; 84 e[x]=p; 85 86 p=(node*) malloc (sizeof(node)); 87 p->d=x; 88 p->pos=i; 89 p->c=1; 90 p->next=e[y]; 91 e[y]=p; 92 } 93 fa[1]=0; 94 dfs(1); 95 for (i=1;i<=m;i++) 96 printf("%d",cond[i]); 97 return 0; 98 } 99 /* 100 3 2 101 1 2 102 2 3 103 */
转载于:https://www.cnblogs.com/cmyg/p/9532517.html
E 定向 牛客练习赛25相关推荐
- 牛客练习赛 25 E题 定向 【桥 + 思维】 无向图定方向变强连通图
传送门 题意: 给定一个无向图, 然后你要给这幅图每条边加上一个方向, 使得这个图是有向图强连通 思路: 关键在于如何判断无解的情况, 如果能保证当前的图有解, 那么直接dfs一下就可以出答案. 仔细 ...
- 牛客练习赛25 B-最长区间
题目链接: 题目描述 给你一个长度为 n 的序列 a ,求最长的连续的严格上升区间的长度. 同时会进行 m 次修改,给定 x , y ,表示将 ax 修改为 y ,每次修改之后都要求输出答案. 输入描 ...
- 牛客练习赛25 因数个数和
题目链接 题目描述 q次询问,每次给一个x,问1到x的因数个数的和. 输入描述: 第一行一个正整数q : 接下来q行,每行一个正整数 x 输出描述: 共q行,每行一个正整数表示答案 示例1 输入 4 ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
- 牛客练习赛34 E little w and Digital Root(数位dp)
title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...
- 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)
title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...
- 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- 牛客练习赛73 D 离别(线段树+右端点排序离线查询)
牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...
最新文章
- java重定向带参数_急 求助重新封装重定向带参数问题
- 活久见!音乐在AR手里“活”了起来
- 算法—详细讲解单向链表的实现(python)
- android 关闭软键盘_HTC官方社区明天正式关闭,收入持续下滑或是直接原因
- (pytorch-深度学习系列)pytorch避免过拟合-dropout丢弃法的实现-学习笔记
- 【python】sys.stdout输出不换行
- Eigen--Array
- oracle定时关闭job,Oracle job定时操作
- 使用 web storage 制作简单留言本
- 使用vmware12安装Ubuntu 遇到的两个问题和解决
- xmldocument的使用
- bzoj 2694: Lcm
- iapp软件库源码分享
- 工商企业大数据爬虫系统
- html5 在线留言,html5实现手机弹窗留言对话框
- Configuring CODESYS
- CHD5.3.6在线安装和维护踩坑指南
- 神器 | 百度云资源搜索
- 第一篇自用博客:git的操作(防忘记用的hh)封面是我最爱的歌手ikura强推她的每一首歌,简直就是行走的唱片啊有木有!
- 域名代购还需要关注到全方位宣传
热门文章
- 那些不能遗忘的知识点回顾——C/C++系列(笔试面试高频题)
- 不用更改注册表就可以更改桌面所在的位置
- XAMPP报错:mysqli::real_connect(): (HY000/1045): Access denied for user ‘pma‘@‘localhost‘
- authorization 传 就跨域_headers中添加允许token,客户端跨域请求问题
- 进程调度的时机,切换与过程,方式
- Discord是什么
- python是什么内容
- 身边的同学突然去世,听到消息的时候会伤心吗?
- 你在现实中遇到让你最跌破三观的人或者事是什么?
- 女婿的行为,老丈人哪些不能管,哪些必须管,哪些可管可不管?