[模拟赛] 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\)存在,就向其连边. 那么,一个合法的集合就需要满足,不会存在环. 这样问题转化到了图上,就变得具体了许多,也就更容易考虑.求解了. ...
随机推荐
- 判断ios或者android
<script type="text/javascript"> $(function () { // android和iso下载链接 var u = navigator ...
- HighCharts之2D柱状图、折线图的组合双轴图
HighCharts之2D柱状图.折线图的组合双轴图 1.实例源码 DoubleAxis.html: <!DOCTYPE html> <html> <head> & ...
- 图像处理------颜色梯度变化 (Color Gradient)
有过UI设计经验的一定对2D图形渲染中的Color Gradient 或多或少有些接触,很多编程 语言也提供了Gradient的接口,但是想知道它是怎么实现的嘛? 本文介绍三种简单的颜色梯度变化算法, ...
- 错误代码: 1449 The user specified as a definer ('root'@'%') does not exist
1. 错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:call analyse_use('20150501','20150601 ...
- Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around
1.错误描述 INFO:2015-05-01 11:12:15[localhost-startStop-1] - Root WebApplicationContext: initialization ...
- jquery.lazyload.js实现图片懒加载
个人理解:将需要延迟加载的图片的src属性全部设置为一张相同尽可能小(目的是尽可能的少占宽带,节省流量,由于缓存机制,当浏览器加载了一张图片之后,相同的图片就会在缓存中拿,不会重新到服务器上拿)的图片 ...
- 代码管理必备-----git使用上传码云
作为一个程序员,你要学会代码的管理,这是一个最基本的修养,就像是一个剑客的剑谱,代码管理,目前流行的是svn和git,但是很不好的是git如果没有插件的话,很多人都不会用git bash 来实现自己的 ...
- Ball HDU - 4811
Jenny likes balls. He has some balls and he wants to arrange them in a row on the table. Each of tho ...
- xml的SAX解析规则
一,为什么要用它 1.1,讲解 DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树. 对内存要求比较要. 缺点: 不适合读取大容量的xml文件,容易导致内存溢出. SAX ...
- JNDI在server.xml中的配置(全局和局部的)
总结: 全局就是在数据源server.xml中配置,然后通过和项目名相同的xml来进行映射.对所有的项目都起作用.那个项目需要就在对应的tomcat下配置一个与项目名相同的xml映射文件. 局部的就是 ...