求助,悬关
  • 板块灌水区
  • 楼主FBI_Hu_Tao
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/10/15 15:54
  • 上次更新2024/10/15 19:24:00
查看原帖
求助,悬关
556285
FBI_Hu_Tao楼主2024/10/15 15:54

此代码MLE之处在哪(本地正常运行,LG上全MLE)

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,x,y,ans;
vector<int>a[100010];
int low[100010],dfn[100010],ge[100010];
int dfs(int now,int root){
    low[now]=dfn[now]=++cnt;
    int ch=0;
    for(int i=0;i<a[now].size();i++){
        int v=a[now][i];
        if(!dfn[v]){
            dfs(v,root);
            low[now]=min(low[now],low[v]);
            if(low[v]>=dfn[now]&&now!=root)ge[now]=1;
            if(now==root)ch++;
        }else low[now]=min(low[now],dfn[v]);
    }
    if(ch>=2&&root==now)ge[root]=1;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>x>>y;
        a[x].push_back(y);
        a[y].push_back(x);
    }
    for(int i=1;i<=n;i++){
        if(!dfn[i])dfs(i,i);
    }
    for(int i=1;i<=n;i++){
        if(ge[i]==1)ans++;
    }
    cout<<ans<<endl;
    for(int i=1;i<=n;i++){
        if(ge[i]==1)cout<<i<<" ";
    }
    return 0;
}

题目为P3388 【模板】割点(割顶)

2024/10/15 15:54
加载中...