[模拟赛] T2 混合图
Description
Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题。 Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家。他一般 会从任意一个点出发,随便找边走,沿途欣赏路上的美景。但是我们的 Hzwer 是一个奇怪 的人,他不喜欢走到自己以前走过的地方,他的国家本来有p1条有向边,p2条无向边,由 于国王奇怪的爱好,他觉得整改所有无向边,使得他们变成有向边,要求整改完以后保证他 的国家不可能出现从某个地点出发顺着路走一圈又回来的情况。(注:m=p1+p2.) 概述:给你一张混合图,要求你为无向图定向,使得图上没有环。
Input
第一行3个整数 n,p1,p2,分别表示点数,有向边的数量,无向边的数量。 第二行起输入p1行,每行2个整数 a,b 表示a到b有一条有向边。 接下来输入p2行,每行2个整数 a,b 表示a和b中间有一条无向边。
Output
对于每条无向边,我们要求按输入顺序输出你定向的结果,也就是如果你输出a b, 那表示你将a和b中间的无向边定向为a->b。 注意,也许存在很多可行的解。你只要输出其中任意一个就好。
Range
对于20%的数据 n<=10 p1<=10 p2<=5 对于30%的数据 n<=10 p1<=30 p2<=20 对于100%的数据 n<=100000 p1<=100000 p2<=100000 数据保证至少有一种可行解。
Solution
通过题目可以知道这道题其实是求一个DAG上的边方向。我们先普及一下,一个图是DAG的充要条件是有一个完整的拓扑序。这道题因为保证有解,所以我们可以先对输入的有向边拓扑排序一下,然后输入无向边的时候让层次小的指向层次大的,这就构成了一个DAG。
Code
#include<queue> #include<cstdio> #include<cctype> using namespace std; queue<int> q; ]; ]; ]; int n,p1,p2,cnt,sum; struct Edge{ int to,nxt; }edge[]; void add(int x,int y){ edge[++cnt].to=y; edge[cnt].nxt=head[x]; head[x]=cnt; } void topsort(){ while(q.size()){ int u=q.front();q.pop(); ceng[u]=++sum; for(int i=head[u];i;i=edge[i].nxt){ ru[edge[i].to]--; if(!ru[edge[i].to]) q.push(edge[i].to); } } } signed main(){ scanf("%d%d%d",&n,&p1,&p2); ;i<=p1;i++){ int x,y; scanf("%d%d",&x,&y); add(x,y); ru[y]++; } ;i<=n;i++){ if(!ru[i]) q.push(i); } topsort(); ;i<=p2;i++){ int x,y; scanf("%d%d",&x,&y); if(ceng[x]>ceng[y]) printf("%d %d\n",y,x); else printf("%d %d\n",x,y); } ; }
[模拟赛] T2 混合图的更多相关文章
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
- 【2019.8.12 慈溪模拟赛 T2】汪哥图(wang)(前缀和)
森林 考虑到题目中给出条件两点间至多只有一条路径. 就可以发现,这是一个森林. 而森林有一个很有用的性质. 考虑对于一棵树,点数-边数=\(1\). 因此对于一个森林,点数-边数=连通块个数. 所以, ...
- 模拟赛T2 线段树优化建图+tarjan+拓扑排序
然而这只是 70pts 的部分分,考场上没想到满分怎么做(现在也不会) code: #include <cstdio> #include <string> #include & ...
- 20161003 NOIP 模拟赛 T2 解题报告
Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...
- NOIP欢乐模拟赛 T2 解题报告
小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...
- 跳跳虎回家(国庆10.1模拟赛T2)
题目: [题目描述] 跳跳虎在外面出去玩忘了时间,现在他需要在最短的时间内赶回家. 跳跳虎所在的世界可以抽象成一个含有 n 个点的图(点编号从 1 到 n ),跳跳虎现在在 1 号点,跳跳虎的家在 n ...
- 20181031noip模拟赛T2
思路: 这道题是个图论抽象的题目…… 考场上想到了没写对…… 我们发现,f函数转移的方式有两种,要么是代价10的+1,要么是代价1的乘一个质因数 那么我们就可以将这个抽象为一张图 每个i向每个i+1连 ...
- 20181029NOIP模拟赛T2
2.追捕 [题目背景] Duan2baka:“jmsyzsfq天下第一蠢!” jmsyzsfq:“你说什么?!” [题目描述] 于是Duan2baka开始了逃亡的旅程,而jmsyzsfq也开始追捕Du ...
- 【2019.8.11上午 慈溪模拟赛 T2】十七公斤重的文明(seventeen)(奇偶性讨论+动态规划)
题意转化 考虑我们对于集合中每一个\(i\),若\(i-2,i+k\)存在,就向其连边. 那么,一个合法的集合就需要满足,不会存在环. 这样问题转化到了图上,就变得具体了许多,也就更容易考虑.求解了. ...
随机推荐
- mysql导入导出数据
mysqldump是MySQL自带的导出数据工具,通常我们用它来导出MySQL中,但是有时候我们需要导出MySQL数据库中某个表的部分数据作为测试. mysqldump命令中带有一个 --where/ ...
- probabilistic robotics_bayes filter
贝叶斯滤波 执行测量后的后验概率: 执行测量前的先验概率: 执行测量后的后验概率推导 根据式2.23的推导方式 可推出 假定xt是complete,即xt可以完全决定测量结果,那么则有2.56式: 带 ...
- VC中基于 Windows 的精确定时
在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要 ...
- mysql事务介绍
什么是事务 一组sql语句操作单元组内所有sql完成一个业务如果整组成功,意味着组内的全部的sql成功如果其中任何一个失败,意味着整个操作失败 数据回到操作前的状态 事务的特点 1.多条sql语句组成 ...
- [INS-32052] Oracle基目录和Oracle主目录位置相同
1.错误描述 [INS-32052] Oracle基目录和Oracle主目录位置相同 2.错误原因 Oracle基目录和Oracle主目录位置相同 3.解决办法 Oracle基目录和Ora ...
- javascript学习记录-2-18
对象定义的几种方法: var person=new Object(); person.name="111"; person.age=22; 或 var person={ na ...
- tp3.2 URL_MODEL为2 配置
1. tp项目index.php同级目录 add . htaccess文件 ,rewirte重写 内容为: <IfModule mod_rewrite.c> Options +Follo ...
- 【SPOJ】Longest Common Substring II (后缀自动机)
[SPOJ]Longest Common Substring II (后缀自动机) 题面 Vjudge 题意:求若干个串的最长公共子串 题解 对于某一个串构建\(SAM\) 每个串依次进行匹配 同时记 ...
- 【洛谷1607】【USACO09FEB】庙会班车
题面 题目描述 逛逛集市,兑兑奖品,看看节目对农夫约翰来说不算什么,可是他的奶牛们非常缺乏锻炼--如果要逛完一整天的集市,他们一定会筋疲力尽的.所以为了让奶牛们也能愉快地逛集市,约翰准备让奶牛们在集市 ...
- [CF908D]New Year and Arbitrary Arrangement
题面在这里 题意 给定三个数\(k,pa,pb\),每次有\(\frac{pa}{pa+pb}\)的概率往后面添加一个'\(a\)',每次有\(\frac{pb}{pa+pb}\)的概率往后面添加一个 ...