Language: C++

#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<algorithm>
#include<cmath>
#include<climits>
#include<string>
#include<set>
#include<numeric>
#include<map>
#include<iostream>
using namespace std;
#define rep(i,n) for(int i = 0;i<((int)(n));i++)
#define reg(i,a,b) for(int i = ((int)(a));i<=((int)(b));i++)
#define irep(i,n) for(int i = ((int)(n)-1);i>=0;i--)
#define ireg(i,a,b) for(int i = ((int)(b));i>=((int)(a));i--)
typedef long long ll;
typedef pair<ll, ll> mp;

int G[100001][100001],n[100001]={},timer,root,numV,numE,parent[100001],lowest[100001],prenum[100001],ans[100001]={},rootChild=0;
bool visited[100001];

void dfs(int u,int prev){
    // ????????? u ????¨????????????´????????????
    prenum[u] = timer;
    lowest[u] = timer;
    timer++;

    visited[u] = true;

    rep(i,n[u]){
    	int v = G[u][i];
        if(!visited[v]){
        	if(prev==-1)rootChild++;
        	// ????????? u ??????????????? v ????¨????????????´????????????
            parent[v] = u;
            dfs( v, u );
            // ????????? v ?????¢?´¢?????????????????´????????????
            lowest[u] = min( lowest[u], lowest[v] );
        }else if(v != prev){
			// ??¨?????? u --> v ??? Back-edge ?????´????????????
            lowest[u] = min( lowest[u], prenum[v] );
        }
    }
    // ????????? u ?????¢?´¢?????????????????´????????????
}

void depthFirstSearchScheme(void){
	rep(i,numV){
		visited[i] = false;
	}
	root = 0;
	timer = 1;
	// lowest ????¨????
	dfs( root, -1 );
}

int main(void){
	cin>>numV>>numE;
	int s,t;
	rep(i,numE){
		cin>>s>>t;
		G[s][n[s]]=t;
		G[t][n[t]]=s;
		n[s]++;
		n[t]++;
	}
	depthFirstSearchScheme();
	if(rootChild>=2)ans[0]=1;
	reg(i,1,numV-1){
		if(prenum[parent[i]]<=lowest[i] && parent[i]!=root)ans[parent[i]]=1;
	}
	rep(i,numV){
		if(ans[i]==1)cout<<i<<endl;
	}

	return 0;
}

Compiler output:
/tmp/ccsgiWol.o: in function `dfs(int, int)':
a.cc:(.text+0x10): relocation truncated to fit: R_X86_64_PC32 against symbol `timer' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0x25): relocation truncated to fit: R_X86_64_PC32 against symbol `prenum' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0x2e): relocation truncated to fit: R_X86_64_PC32 against symbol `timer' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0x43): relocation truncated to fit: R_X86_64_PC32 against symbol `lowest' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0x4c): relocation truncated to fit: R_X86_64_PC32 against symbol `timer' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0x55): relocation truncated to fit: R_X86_64_PC32 against symbol `timer' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0x61): relocation truncated to fit: R_X86_64_PC32 against symbol `visited' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0xa7): relocation truncated to fit: R_X86_64_PC32 against symbol `visited' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0xc2): relocation truncated to fit: R_X86_64_PC32 against symbol `rootChild' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0xcb): relocation truncated to fit: R_X86_64_PC32 against symbol `rootChild' defined in .bss section in /tmp/ccsgiWol.o
a.cc:(.text+0xdf): additional relocation overflows omitted from the output
collect2: error: ld returned 1 exit status