第十个数据点过不了,有没有dalao帮忙看看
查看原帖
第十个数据点过不了,有没有dalao帮忙看看
381189
xiezihanAKIOI楼主2022/7/5 15:25
#include <bits/stdc++.h>

using namespace std;

vector <int> G[500005];
int dfn[105], low[500005], n, Index, root;
bool ifcut[500005];
int a, b, minn = INT_MAX;


void Tarjian_poi (int u, int fat)
{
    int child = 0;
    dfn[u] = low[u] = ++Index;
    for (int i = 0 ; i < G[u].size () ; i++)
    {
        int v = G[u][i];
        if (dfn[v] == 0)
        {
            child++;
            Tarjian_poi (v, u);
            low[u] = min (low[u], low[v]);
            if (low[v] >= dfn[u])
            {
                if (u != root && dfn[b] >= dfn[v]) ifcut[u] = 1;
            }
        } else {
            if (v != fat) low[u] = min (low[u], dfn[v]);
        }
    }
}

signed main ()
{
    cin >> n;
    while (1)
    {
        int u, v;
        cin >> u >> v;
        if (u == 0 && v == 0) break;
        G[u].push_back (v);
        G[v].push_back (u);
    }
    cin >> a >> b;
    root = a;
    Tarjian_poi (a, a);
    for (int i = 1 ; i <= n ; i++)
    {
        if (ifcut[i]) minn = min (minn, i);
    }
    if (minn == INT_MAX) cout << "No solution";
    else cout << minn;
    return 0;
}
2022/7/5 15:25
加载中...