蒟蒻发问:为什么会RE?
查看原帖
蒟蒻发问:为什么会RE?
250097
BaYueXiang楼主2022/6/24 21:12

代码如下 求调:

//在无向连通图中,如果结点 u 被去除后,原无向连通图不再联通,则称点 u 为割点 
#include<iostream>
#include<vector>
using namespace std;
int n,m,head[100001],dfn[100001],low[100001],index,d[100001];
bool book[100001];
vector<int> dot;
struct node {
    int v,next;
}point[10001];
void ae (int u,int v,int now) {
    point[now].v=v;
    point[now].next=head[u];
    head[u]=now;
}
void tarjon (int u,int fa) {
    dfn[u]=low[u]=++index;
    for (int a=head[u];a;a=point[a].next) {
        int v=point[a].v;
        if (v==fa) continue;
        if (dfn[v]==0) {
            tarjon(v,u);
            low[u]=min(low[u],low[v]);
            if (dfn[u]<=low[v]) d[u]++;
        }
        else low[u]=min(low[u],dfn[v]);
    }
}
int main () {
    cin >>n>>m;
    for (int a=1;a<=m;a++) {
        int u,v;
        cin >>u>>v;
        ae(u,v,2*a-1);
        ae(v,u,2*a);
    }
    for (int a=1;a<=n;a++) if (!book[a]) tarjon(a,0);
    for (int a=1;a<=n;a++) {
        if (a==1 && d[a]>=2) dot.push_back(a);
        else if (d[a]>0) dot.push_back(a);
    }
//  cout <<dot.size()<<endl;
    for (int a=0;a<dot.size();a++) cout <<dot[a]<<endl;
    return 0;
}
2022/6/24 21:12
加载中...