前言:P大终于又更新了

正文

转送门

由于当时我这个ZZ不知怎么了,这份题解排版可能有些尴尬,建议大家读完题后,看我主程序前的代码的注释,然后看最下面的图片,然后看第一张图片,对不起,望多谅解

以样例为例。具体看代码及其中的注释,这样做的正确性,看最下面说明

#include<iostream>#include<cstdio>#include<queue>using namespace std;/*    晕牛:拓扑排序    根据题干可知,有向边不成环,所以通过拓扑排序可以知道哪个入度少    当你强行把拓扑排序后在排序位置前面的点a和排序在后面的点b链接这一起    形成一条从b到a的有向边,则就会形成环。    而未避免形成环,就要在后面读入无向图时进行判断     而此题由于无向图的双向性不好处理,    于是,就规定输入第一个数字为出度,第二个数字为入度     先把不会形成环的点跑一个拓扑排序    然后在判断让某些点强行连接后会不会有环    会就改方向,不会就不用管 */const int MAXN=100001;int tot,a,b,n,p1,p2,cnt;int top[MAXN];//top是拓扑排序后每个数的编号 int head[MAXN],ver[MAXN],nxt[MAXN],deg[MAXN];//存图 void add(int x,int y){    ver[++tot]=y;nxt[tot]=head[x];    head[x]=tot;deg[y]++;}void topsort(){//拓扑排序     queue<int> q;    for(register int i=1;i<=n;i++)        if(deg[i]==0) q.push(i),top[i]=++cnt;    //先扫一遍,把初始就没有入度的排序     while(q.size()){        int x=q.front();q.pop();        for(register int i=head[x];i;i=nxt[i]){            int y=ver[i];            //y是该到某个边的出度点了             if(!(--deg[y])) q.push(y),top[y]=++cnt;            //如果它入度为零的话,就把它塞进栈里         }    }}int main(){    scanf("%d%d%d",&n,&p1,&p2);    for(register int i=1;i<=p1;i++)        scanf("%d%d",&a,&b),add(a,b);    topsort();    for(register int i=1;i<=p2;i++){        scanf("%d%d",&a,&b);        if(top[a]>top[b]) printf("%d %d\n",b,a);        //如果在原本拓扑排序中a的序列在b后面,强行连一条从a到b的边,会有环         else printf("%d %d\n",a,b);    }    return 0;}

说明

 

国际惯例:thankyou for your attention

 
 
 
 

题解 p2017 [USACO09DEC]晕牛Dizzy Cows的更多相关文章

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

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

  2. [USACO09DEC]晕牛Dizzy Cows (拓扑排序)

    https://www.luogu.org/problem/P2017 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken ...

  3. [USACO09DEC] Dizzy Cows 拓扑序

    [USACO09DEC] Dizzy Cows 拓扑序 先对有向边跑拓扑排序,记录下每个点拓扑序,为了使最后的图不存在环,加入的\(p2\)条无向边\(u,v\)必须满足\(u\)拓扑序小于\(v\) ...

  4. 【P3056】【USACO12NOV】笨牛Clumsy Cows

    P3056 [USACO12NOV]笨牛Clumsy Cows 题目描述 Bessie the cow is trying to type a balanced string of parenthes ...

  5. 树形DP【洛谷P3047】 [USACO12FEB]附近的牛Nearby Cows

    P3047 [USACO12FEB]附近的牛Nearby Cows 农民约翰已经注意到他的奶牛经常在附近的田野之间移动.考虑到这一点,他想在每一块土地上种上足够的草,不仅是为了最初在这片土地上的奶牛, ...

  6. 洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows

    P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...

  7.  洛谷 P3056 [USACO12NOV]笨牛Clumsy Cows

    P3056 [USACO12NOV]笨牛Clumsy Cows 题目描述 Bessie the cow is trying to type a balanced string of parenthes ...

  8. 【题解】Luogu p3047 [USACO12FEB]附近的牛Nearby Cows 树型dp

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

  9. 洛谷P2017晕牛

    传送门啦 这个题没有想象中复杂. 我们先有向边建立,因为我们无法改变有向边的方向. 建立完之后跑一边拓扑排序,我们按拓扑序小的指向大的就好了. 解释: 我们知道如果一个点在另一个点顺序的后面的话,如果 ...

随机推荐

  1. Display PDF in browser | Acrobat, Reader XI

    点这个链接查看详细的解决办法 http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html When you cli ...

  2. TableLayout 里的TextView等组的LayoutParams参数问题

    TableLayout 里的TextView等组的LayoutParams参数不能是LinearLayout.LayoutParams这样来定义, 只能是用TableRow.LayoutParams ...

  3. Servlet.service() for servlet UserServlet threw exception java.lang.NullPointerException 空指针异常

    错误付现: 严重: Servlet.service() for servlet UserServlet threw exceptionjava.lang.NullPointerException at ...

  4. DRBD+Heartbeat实现自动切换

    1>HeartBeat介绍 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项 ...

  5. Android-bindService本地服务-音乐播放-上

    播放音乐的行为写在服务里,Activity去调用Service里面到方法,进行音乐播放,当Activity结束后,音乐播放器停止播放 界面: MainActivity: package liudeli ...

  6. PHP爬虫(3)PHP DOM开源代码里的大坑和字符编码

    一.开源代码的问题 在PHP爬虫(2)中介绍了开源工程Sunra.PhpSimple.HtmlDomParser.在实际工作中发现一个问题,例如http://www.163.com的网页数据怎么也抓取 ...

  7. HTML5、CSS3与响应式Web设计入门(1)

    HTML5与CSS3已经当仁不让的成为了这两年Web界最火爆的词,他们似乎在HTML4和CSS2统治了Web很多年之后的某一天突然爆发,然 后一直占据着所有Web开发者的视野.HTML5本身就是一个很 ...

  8. django:multivaluedictkeyerror错误

    查了一下,是因为获取前台数据时,用了request.POST[],改用request.POST.get()之后没有这个报错了 细节: request.POST是用来接受从前端表单中传过来的数据,比如用 ...

  9. 扫描指定ip的端口(C#)

    class PingExam { public static void Main() { Ping ping = new Ping(); string ip = "192.168.1.43& ...

  10. VUE环境安装和创建项目

    1.首先要安装nodejs和npm. 下载nodejs安装,下载地址:https://nodejs.org/en/ 安装很简单一路next即可. 安装完成后可以在cmd窗口输入node -v 和 np ...