254742026-02-20 11:33:00abcdElfogáscpp17Elfogadva 50/5059ms3468 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn=20001;
vector<int> adj[maxn];

int tin[maxn],low[maxn],par[maxn],timer=1;
bool is[maxn],can[maxn];
vector<int> ans;
int dest,sep;

void dfs(int v,int p){
    par[v]=p;
    tin[v]=low[v]=timer++;
    int children=0;
    for(int to:adj[v]){
        if(to==p)continue;
        if(tin[to])low[v]=min(low[v],tin[to]);
        else{
            dfs(to,v);
            low[v]=min(low[v],low[to]);
            children++;
            if(p!=-1&&low[to]>=tin[v])is[v]=true;
            if(to==sep&&low[to]<tin[v])sep=v;
        }
    }
    if(p==-1&&children>1)is[v]=true;
}

void dfs2(int v){
    can[v]=true;
    ans.push_back(v);
    for(int to:adj[v]){
        if(par[to]==v){
            dfs2(to);
        }
    }
}

int main(){
    int n,m,u;cin>>n>>m>>u>>dest;
    for(int i=0;i<m;i++){
        int a,b;cin>>a>>b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    sep=dest;
    dfs(u,-1);
    dfs2(sep);
    cout<<ans.size()<<'\n';
    for(int x:ans)cout<<x<<' ';cout<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms820 KiB
2Elfogadva0/08ms1332 KiB
3Elfogadva2/21ms1004 KiB
4Elfogadva2/22ms820 KiB
5Elfogadva2/22ms820 KiB
6Elfogadva2/22ms964 KiB
7Elfogadva3/32ms1012 KiB
8Elfogadva3/32ms820 KiB
9Elfogadva3/34ms820 KiB
10Elfogadva3/34ms820 KiB
11Elfogadva3/37ms1224 KiB
12Elfogadva3/38ms1332 KiB
13Elfogadva3/38ms1332 KiB
14Elfogadva3/39ms1544 KiB
15Elfogadva3/310ms1588 KiB
16Elfogadva3/339ms2128 KiB
17Elfogadva3/341ms2356 KiB
18Elfogadva3/341ms2360 KiB
19Elfogadva3/343ms2444 KiB
20Elfogadva3/359ms3468 KiB