首页 > 其他分享 >P1347 排序 题解

P1347 排序 题解

时间:2022-09-23 17:55:44浏览次数:71  
标签:return int 题解 dfs vis bol 排序 P1347

题干

交了8次,下载了3个测点.....

首先这个题,很容易想到用拓扑

如果有“X$<$Y”,就建立一条从X到Y的有向边

要考虑到,如果排序成立,必须满足入度为0的点只有一个并且出度为0的点只有一个

并且在拓扑排序的时候,不可以出现同一时间有两个节点入度为0

其中判断环,用一个dfs来做,方式如下:

理论基础

int dfs( int p,int from,bool bol ){ 
    //p是当前节点编号,from是dfs起点,bol是为了避免在起点就弹出
    if( p == from && bol ) //回到了起点
        return 1;
    if( vis[p] && bol ) return 0;//避免死循环(很重要!)
    vis[p] = 1;
    for( int i = head[p];i;i = e[i].next ){
        int to = e[i].to;
        if( dfs(to,from,1) ) return 1;
    }
    return 0;
}

//main函数中
//判断环
FOR( i,1,n ){
    memset( vis,0,sizeof(vis) );
    vis[i] = 1;
    if( dfs(i,i,0) ){ //有矛盾
        cout << "Inconsistency found after " << ffi << " relations." << endl;
        err = 1;
        break;
    }
}
dfs 判断环

其中一定一定要判断这个死循环,否则TLE或MLE(炸栈)

判断入度出度的时候,用一个int变量就行了,不要开数组

标签:return,int,题解,dfs,vis,bol,排序,P1347
From: https://www.cnblogs.com/xiao-en/p/16723607.html

相关文章

  • java基础-冒泡排序以及稀疏数组
     java基础 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720908.html Ø 冒泡排序原理:比较数组中,两个相邻的元......
  • 冒泡排序
    简介代码实现publicclassBubbleSort{ publicstaticvoidmain(String[]args){ intarr[]={3,9,-1,10,20};//第1趟 inttemp......
  • P5089 [eJOI2018] 元素周期表 题解
    \(Preface\)主要是想刷点咕值然后就写了一写。。。顺便扔到博客园这边。题解题目传送门这道题嘛..主要还是找性质推规律。拿到题,第一眼:噢噢爆搜啊。第二眼:噢噢贪心啊......
  • P4484题解
    很神奇的状态。。。。。。很难想象这是一个人能在考场上想到的状态。对于一个排列\(p\),设\(f_i\)表示以\(p_i\)结尾的LIS的长度。考虑排列计数的套路令所有元素......
  • Vue中使用benz-amr-recorder插件实现播放amr音频文件以及在线url跨域问题解决
    场景需要做一个Android端和Web端的聊天室,Android端的录音音频文件为.amr格式,除了通过后台server端转码之后,是否可以通过插件在前端直接播放amr的音频文件。benz-amr-rec......
  • 【NEERC2011】【GYM100085F】Flights 题解
    【NEERC2011】【GYM100085F】Flights题意给定\(n\)个抛物线,保证开口向下且与\(x\)轴的两个交点都在\(x\)轴正半轴或原点。\(m\)次询问,每次询问给定四个数\(L,R,......
  • 拖拽排序
    <!doctypehtml><html><head><metacharset="UTF-8"><title>拖拽排序</title><style>ul{list-style:none;margi......
  • 【题解】Race
    今天教练说让刷题,我去刷了。刷到这道题,挺好的。\(n\)个同学打了\(2^{m}\)次比赛,同学\(j\)第\(i\)次比赛的成绩是\(a_j\operatorname{xor}i\),每次获得的积分......
  • 题解 P7870 「Wdoi-4」兔已着陆
    不用真的模拟一个个的蛋糕。直接将一个区间压入栈中即可。取出来时,注意将断的区间一分为二重新塞入。#include<bits/stdc++.h>usingnamespacestd;#defineN1000010......
  • CF1430G 题解
    传送门题意给定一个有向无环图,每条边有权重\(w_i\),给每个点分配权值\(a_i\),使每个点的权值大于其所有出点。设每条边的权值为\(a_{x_i}-a_{b_i}\)。输出一种分配方案,......