zoukankan      html  css  js  c++  java
  • 洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom

    代码是粘的,庆幸我还能看懂。
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<stack>
    #include<vector>
    
    using namespace std;
    struct node
    {
        int num,par;
    }p[10005];
    int n,m,index=1,x,y,cnt;
    vector<int>v[10005];
    bool vis[10005];
    int ind[10005];
    stack<int>s;
    bool in_stack[10005];
    void tarjan(int x)
    {
        p[x].num=index;
        p[x].par=p[x].num;
        index++;
        vis[x]=1;
        in_stack[x]=1;
        s.push(x);
        for(int i=0;i<v[x].size();i++)
        {
            if(!vis[v[x][i]])
            {
                tarjan(v[x][i]);
                p[x].par=min(p[x].par,p[v[x][i]].par);
            }
            else if(in_stack[v[x][i]])
            {
                p[x].par=min(p[x].par,p[v[x][i]].num);
            }
        }
        if(p[x].num==p[x].par)
        {
            ++cnt;
            int gutc=0;
            int k;
            do
            {
                k=s.top();
                s.pop();
                in_stack[k]=0;
                gutc++;
            }while(k!=x);
            if(gutc==1) cnt--;
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&x,&y);
            v[x].push_back(y);
        }
        for(int i=1;i<=n;i++) if(!vis[i]) tarjan(i);
        printf("%d
    ",cnt);
        return 0;
    } 
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    java语言基础
    常用4种限流算法介绍及比较
    如何用Redis实现分布式锁
    翻转字符串
    JAVA之io流
    JAVA之Collections集合
    【转】IT行业岗位以及发展方向
    JAVA之字符串
    JAVA之数组
    Linux之判断字符串是否为空
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6904768.html
Copyright © 2011-2022 走看看