254682026-02-20 11:14:17abcdElfogáscpp17Hibás válasz 1/5054ms3920 KiB
#include <bits/stdc++.h>
using namespace std;

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

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

void dfs(int v,int 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(p==-1&&children>1)is[v]=true;
}

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

int main(){
    int n,m,u,dest;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);
    }
    dfs(u,-1);
    dfs2(u);
    cout<<ans.size()<<'\n';
    for(int x:ans)cout<<x<<' ';cout<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base1/50
1Hibás válasz0/01ms820 KiB
2Hibás válasz0/08ms1332 KiB
3Hibás válasz0/21ms820 KiB
4Hibás válasz0/22ms820 KiB
5Hibás válasz0/23ms1004 KiB
6Hibás válasz0/23ms820 KiB
7Hibás válasz0/33ms1260 KiB
8Hibás válasz0/32ms1076 KiB
9Hibás válasz0/34ms1076 KiB
10Hibás válasz0/34ms1076 KiB
11Hibás válasz0/37ms1068 KiB
12Hibás válasz0/38ms1320 KiB
13Hibás válasz0/38ms1424 KiB
14Hibás válasz0/38ms1404 KiB
15Részben helyes1/310ms1484 KiB
16Hibás válasz0/339ms2736 KiB
17Hibás válasz0/341ms2864 KiB
18Hibás válasz0/341ms2852 KiB
19Hibás válasz0/341ms2868 KiB
20Hibás válasz0/354ms3920 KiB