• AGC027C ABland Yard


    Link
    结论:如果存在一个连通块,其中每个点既能到A点又能到B点,那么答案为Yes,否则为No
    那么魔改拓扑排序判环即可,如果一个点到不了AB的点我们就把它加入队列。
    最后如果有剩下来的点,那么它一定是一个每个点既能到A点又能到B点的连通块。

    #include<queue>
    #include<cstdio>
    #include<cctype>
    #include<vector>
    const int N=200007;
    int read(){int x=0,c=getchar();while(!isdigit(c))c=getchar();while(isdigit(c))x=x*10+c-48,c=getchar();return x;}
    std::vector<int>e[N];std::queue<int>q;
    int n,m,ans,vis[N],deg[N][2];char col[N];
    int main()
    {
        n=read(),m=read(),scanf("%s",col+1);
        for(int i=1,u,v;i<=m;++i) u=read(),v=read(),e[u].push_back(v),e[v].push_back(u),++deg[u][col[v]=='B'],++deg[v][col[u]=='B'];
        for(int i=1;i<=n;++i) if(!deg[i][0]||!deg[i][1]) ++ans,q.push(i),vis[i]=1;
        for(int u;!q.empty();)
        {
    	u=q.front(),q.pop();
    	for(int v:e[u]) if(!vis[v]&&!--deg[v][col[u]=='B']) ++ans,q.push(v),vis[v]=1;
        }
        puts(ans==n? "No":"Yes");
    }
    
  • 相关阅读:
    LeetCode:数组(三)
    LeetCode:数组(二)
    LeetCode:数组(一)
    python实现栈的基本操作
    python基本内置函数
    Pycharm的常见Debug调试方法(持续更新)
    计算广告系列(一)-基本概念整理
    es与solr对比
    数据库优化
    java线程池
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12274417.html
Copyright © 2020-2023  润新知