Educational Codeforces Round 36 D Almost Acyclic Graph

Posted Visitor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Educational Codeforces Round 36 D Almost Acyclic Graph相关的知识,希望对你有一定的参考价值。

【链接】 我是链接,点我呀:)
【题意】


在这里输入题意

【题解】


找到任意一个环。
然后枚举删掉其中的某一条边即可。
(因为肯定要删掉这个环的,那么方法自然就是删掉其中的某一条边
(其它环,如果都包括这条边,那么就可以,否则,某个环不包括那也没办法,自然就无解了。
这样枚举的边的数目最多是500(环最多N条边)
然后复杂度就是500*10万了。
足够过了

【代码】

#include <bits/stdc++.h>
using namespace std;

int n, m;
vector<int> G[550];
int cor[550];
vector<int> path;

int dfs(int v){
    cor[v] = 1;
    for(int r : G[v]){
        if(!cor[r] and dfs(r) ){
            path.push_back( r );
            return 1;
        }else if( cor[r] == 1){
            path.push_back( r );
            return 1;
        }
    }
    cor[v] = 2;
    return 0;
}

int dfs2(int v, int a, int b){
    cor[v] = 1;
    for(int r : G[v]){
        if(v == a and r == b) continue;
        if(!cor[r] and dfs2(r, a, b) ){
            return 1;
        }else if( cor[r] == 1){
            return 1;
        }
    }
    cor[v] = 2;
    return 0;
}

int main(){
    scanf("%d %d", &n,&m);
    for(int i = 0; i < m; i++){
        int x, y;
        scanf("%d %d", &x, &y);
        G[x].push_back(y);
    }
    int ciclo = 0;
    for(int i = 1; i <= n; i++){
        if(!cor[i]) ciclo = ciclo or dfs(i);
    }
    if(!ciclo){
        printf("YES\n");
        return 0;
    }
    reverse(path.begin(), path.end());
    path.push_back( path[0] );
    /*
    for(int p: path){
        printf(">> %d\n", p);
    }
    */
    for(int i = 1; i < path.size(); i++){
        memset(cor, 0, sizeof cor);
        ciclo = 0;
        for(int j = 1; j <= n; j++){
            if(!cor[j]) ciclo = (ciclo or dfs2(j, path[i-1], path[i]));
        }
        if(!ciclo){
            printf("YES\n", i);
            return 0;
        }
    }

    printf("NO\n");
    return 0;

}

以上是关于Educational Codeforces Round 36 D Almost Acyclic Graph的主要内容,如果未能解决你的问题,请参考以下文章

Educational Codeforces Round 7 A

Educational Codeforces Round 7

Educational Codeforces Round 90

Educational Codeforces Round 33

Codeforces Educational Codeforces Round 54 题解

Educational Codeforces Round 27