zoukankan      html  css  js  c++  java
  • Codeforces

    题意:

      以每个点为起点,找到第一个出现两次的点

    解析:

      我是先找出来所有的环  环上的点找出来的肯定是自己 bz[i]  = i;

    然后去遍历不在环上的点j  如果通过这个点找到一个已经标记的的点i  那么bz[j] = bz[i];

    行吧。。。其实直接暴力 就几行代码。。。真是的。。。过分。。。。我真是垃圾啊。。啦啦啦。。。呸。。

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 10010, INF = 0x7fffffff;
    vector<int> G[maxn];
    vector<int> f;
    int vis[maxn], bz[maxn], a[maxn];
    int s, t, tmp;
    void dfs1(int u)
    {
        vis[u] = 1;
        for(int i=0; i<G[u].size(); i++)
        {
            int v = G[u][i];
            if(!vis[v])
                dfs1(v);
            else if(u != v)
            {
                s = v;        
                tmp = u;
                return;
            }
            else
            {
                bz[v] = v;
                return;
            }
        }
        if(u == s)
            t = tmp;
    }
    
    void dfs2(int u)
    {
        bz[u] = u;
        if(u == t) return;
        for(int i=0; i<G[u].size(); i++)
            dfs2(G[u][i]);
    }
    
    int dfs3(int u)
    {
        if(bz[u]) return bz[u];
        for(int i=0; i<G[u].size(); i++)
            return dfs3(G[u][i]);
    }
    
    
    int main()
    {
        int n, v;
        cin>> n;
        for(int i=1; i<=n; i++)
        {
            cin>> a[i];
            G[i].push_back(a[i]);
        }
        for(int i=1; i<=n; i++)
            if(!vis[i])
            {
                s = t = tmp = INF;
                dfs1(i);
                if(s != INF && t != INF)        
                    dfs2(s);
            }
        for(int i=1; i<=n; i++)
        {
            if(bz[i]) continue;
            else
                bz[i] = dfs3(i);
        }
        for(int i=1; i<=n; i++)
            cout<< bz[i] << " ";
        cout<<endl;
        
        return 0;
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    Codeforces 834D The Bakery
    hdu 1394 Minimum Inversion Number
    Codeforces 837E Vasya's Function
    Codeforces 837D Round Subset
    Codeforces 825E Minimal Labels
    Codeforces 437D The Child and Zoo
    Codeforces 822D My pretty girl Noora
    Codeforces 799D Field expansion
    Codeforces 438D The Child and Sequence
    Codeforces Round #427 (Div. 2) Problem D Palindromic characteristics (Codeforces 835D)
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9623066.html
Copyright © 2011-2022 走看看