图论日常不会系列。。。

题意:给定有向边和无向边,然后给每一条无向边定向,使得到的图无环。

我本来想缩一下点的,但是越想越晕。

然后就翻了题解,恍然大悟。。。

其实只需要给只有有向边的图跑一次toposort。然后把无向边的定向看做是在添加有向边。

显然不要违反拓扑序来添加有向边,这个图就不可能有环!

所以随便搞一搞就好了。。。

代码:

#include<cstdio>#include<queue>
const int maxn = 100005;
struct Edges
{int next, to;
} e[maxn * 3];
int head[maxn], tot;
int indegree[maxn];
int topo[maxn], ttot;
int where[maxn];
struct Query
{int u, v;
} Q[maxn];
int n, m1, m2;
int read()
{int ans = 0, s = 1;char ch = getchar();while(ch > '9' || ch < '0'){ if(ch == '-') s = -1; ch = getchar(); }while(ch >= '0' && ch <= '9') ans = (ans << 3) + (ans << 1) + ch - '0', ch = getchar();return s * ans;
}
void link(int u, int v)
{e[++tot] = (Edges){head[u], v};head[u] = tot;
}
void toposort()
{std::queue<int> q;for(int i = 1; i <= n; i++) if(indegree[i] == 0) q.push(i);while(!q.empty()){int u = q.front(); q.pop();topo[++ttot] = u;for(int i = head[u]; i; i = e[i].next){int v = e[i].to;indegree[v]--;if(indegree[v] == 0){q.push(v);}}}
}
int main()
{n = read(), m1 = read(), m2 = read();while(m1--){int u = read(), v = read();link(u, v);indegree[v]++;}for(int i = 1; i <= m2; i++){Q[i].u = read(), Q[i].v = read();}toposort();for(int i = 1; i <= ttot; i++) where[topo[i]] = i;for(int i = 1; i <= m2; i++){int temp1 = where[Q[i].u], temp2 = where[Q[i].v];if(temp1 < temp2) printf("%d %d\n", Q[i].u, Q[i].v);else printf("%d %d\n", Q[i].v, Q[i].u);}return 0;
}

转载于:https://www.cnblogs.com/Garen-Wang/p/9794956.html

P2017 [USACO09DEC]晕牛Dizzy Cows相关推荐

  1. 洛谷P2017 [USACO09DEC]晕牛Dizzy Cows [拓扑排序]

    题目传送门 晕牛Dizzy Cows 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken to racing each o ...

  2. Dizzy Cows(拓扑)

    链接:https://ac.nowcoder.com/acm/contest/1077/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  3. P3047 [USACO12FEB]附近的牛Nearby Cows

    题目描述 Farmer John has noticed that his cows often move between nearby fields. Taking this into accoun ...

  4. USACO Clumsy Cows

    洛谷 P3056 [USACO12NOV]笨牛Clumsy Cows 洛谷传送门 JDOJ 2323: USACO 2012 Nov Silver 1.Clumsy Cows JDOJ传送门 Desc ...

  5. cocos creator小游戏案例之趣味套牛

    趣味套牛 0. 思路 搭建基本背景 奔跑的牛 套牛的绳子 套牛成功的判定 结算 重新开始 特效,(音效,粒子) 1. 基本背景 按钮 添加 button 组件 transition: sprite 2 ...

  6. [DP魔炼][DP] DP随练随学(疯狂A题训练——DP基础篇 题解 下)

    终于写完啦!!!!!!!! T28 最大子段和 传送门 维护前缀和 找前面最小的 #include<bits/stdc++.h> using namespace std; #define ...

  7. linux删除多余日志,linux 删除日志

    https://jingyan.baidu.com/album/c1a3101e73129ade656deb9d.html?picindex=2 里面的 ls -s 可以看到目录 https://zh ...

  8. 2017-2018年度刷题记录

    2018暑假刷题1: T1.CF6A Triangle (#模拟 -1.4) T2.CF59A Word(#模拟 -1.5) T3.[洛谷]P2772 寻找平面上的极大点(#贪心 -1.4) T4.[ ...

  9. AcWing 4261. 孤独的照片

    题目: Farmer John 最近购入了 N 头新的奶牛,每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一. 奶牛目前排成一排,Farmer John 想要为每个连续不少 ...

最新文章

  1. 基于Docker的SaaS解决方案
  2. Sqlserver:sp_recompile的副作用
  3. JS~字符串长度判断,超出进行自动截取(支持中文)
  4. golang 代码格式化工具 gofmt
  5. 《CSS蝉意花园读书精记》(基础篇---------上.资料篇1)
  6. canal mysql重置_canal: 首先装完阿里的canal,然后数据库同步,仅供学习参考
  7. C++类的构造函数 后单冒号加基类 例如:CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  8. CentOS 架设DHCP服务
  9. Python抓取小说
  10. ReactNative 启动js server报错:Metro Bundler can't listen on port 8081
  11. 为什么象网络蚂蚁这样的多线程程序可以加快下载速度?
  12. 前端-html实现省份、地市、区县三级联动
  13. [975]python requests实现HTTPS客户端的证书导入
  14. Blend for Visual Studio
  15. ChemDraw怎么调整键长?调整键长教程
  16. js html等比例放大后生成图片 html2canvas
  17. 1725 天黑请闭眼
  18. 【vue】移动端扫描二维码
  19. Android谷歌推送
  20. 如何轻松地打造一款免开发RGB 三路产品?

热门文章

  1. Window 消息大全使用详解(无聊没事做)
  2. mysql 中datetime_MySQL中Datetime与Timestamp
  3. 以色列对话国际农民丰收节贸易会-万祥军:谋定无中生有
  4. 可覆写的函数与创建节点
  5. Java异常知识整理_处理异常时的性能开销
  6. Visual Studio 2008/.NET Framework 3.5 WinForm窗体运用程序发布(部署)
  7. JS判断数字字母中文
  8. 独家发布 | 产品经理生存现状
  9. 如何理解社交效应「蒸发式降温」?
  10. 直正的互联网产品设计:七个作为产品经理实际上很重要的”小事“