Language: C++

class biconnected{
public:
	vector<vector<int> > G ,graph;
	vector<int> check,ord,low,cmp;
	vector<P> bridge;
	vector<bool> visit;
	int V;
	biconnected(int node_size){
		V = node_size;
		G.resize(V);
		check.resize(V),ord.resize(V),low.resize(V);
		cmp.resize(V),visit.resize(V,false);
	}
	void build(){
		int id = 0;
		rep(i,V){
			if(!visit[i]){
				dfs(i,-1,id);
			}
		}
	}
	void dfs(int v,int p,int &k)
	{
		visit[v] = true;
		ord[v] = k++;
		low[v] = ord[v];
		rep(i,(int)G[v].size()){
			int w = w;
			if(!visit[w]){
				dfs(w,v,k);
				low[v] = min(low[v],low[w]);
				if(ord[v] < low[w]){
					bridge.push_back(P(v,w));
	                check[v][i].second = 1;
	                check[w][check[v][i].first].second = 1;
				}
			//(v,w)????????????
			}else if(w != p){
				low[v] = min(low[v],ord[w]);
			}
		}
	}

	void add_edge(int u,int v)
	{
	    G[u].push_back(v),G[v].push_back(u);
	    check[u].push_back(P((int)check[v].size(),0));
	    check[v].push_back(P((int)check[u].size()-1,0));
	}
	void restrict_dfs(int u,int p,int kind,queue<int>& que)
	{
	    visit[u] = true;
	    cmp[u] = kind;
	    rep(i,(int)G[u].size()){
			int w = G[u][i];
	        if(check[u][i].second){
	            if(!visit[w]){
	                que.push(w);
	            }
	        }else if(!visit[w]){
	            restrict_dfs(w,u,kind,que);
	        }
	    }
	}
	//????????°?????????
	int make_bcgraph()
	{
		graph.resize(V);
	    int num = 0;
	    rep(i,node_size){
	        if(!visit[i]){
	            dfs(i,-1,num);
	        }
	    }
	    fill(visit,visit+node_size,false);
	    int kind = 0;
	    rep(i,node_size){
	        if(!visit[i]){
	            queue<int> que;
	            que.push(i);
	            while(!que.empty()){
	                int p = que.front();
	                que.pop();
	                restrict_dfs(p,-1,kind,que);
	                kind++;
	            }
	        }
	    }
	    rep(i,(int)bridge.size()){
	        int a = cmp[bridge[i].first];
	        int b = cmp[bridge[i].second];
	        graph[a].push_back(b), graph[b].push_back(a);
	    }
	    return kind;
	}
};

Compiler output:
a.cc:3:9: error: 'vector' does not name a type
    3 |         vector<vector<int> > G ,graph;
      |         ^~~~~~
a.cc:4:9: error: 'vector' does not name a type
    4 |         vector<int> check,ord,low,cmp;
      |         ^~~~~~
a.cc:5:9: error: 'vector' does not name a type
    5 |         vector<P> bridge;
      |         ^~~~~~
a.cc:6:9: error: 'vector' does not name a type
    6 |         vector<bool> visit;
      |         ^~~~~~
a.cc:50:48: error: 'queue' has not been declared
   50 |         void restrict_dfs(int u,int p,int kind,queue<int>& que)
      |                                                ^~~~~
a.cc:50:53: error: expected ',' or '...' before '<' token
   50 |         void restrict_dfs(int u,int p,int kind,queue<int>& que)
      |                                                     ^
a.cc: In constructor 'biconnected::biconnected(int)':
a.cc:10:17: error: 'G' was not declared in this scope
   10 |                 G.resize(V);
      |                 ^
a.cc:11:17: error: 'check' was not declared in this scope
   11 |                 check.resize(V),ord.resize(V),low.resize(V);
      |                 ^~~~~
a.cc:11:33: error: 'ord' was not declared in this scope
   11 |                 check.resize(V),ord.resize(V),low.resize(V);
      |                                 ^~~
a.cc:11:47: error: 'low' was not declared in this scope
   11 |                 check.resize(V),ord.resize(V),low.resize(V);
      |                                               ^~~
a.cc:12:17: error: 'cmp' was not declared in this scope
   12 |                 cmp.resize(V),visit.resize(V,false);
      |                 ^~~
a.cc:12:31: error: 'visit' was not declared in this scope
   12 |                 cmp.resize(V),visit.resize(V,false);
      |                               ^~~~~
a.cc: In member function 'void biconnected::build()':
a.cc:16:21: error: 'i' was not declared in this scope; did you mean 'id'?
   16 |                 rep(i,V){
      |                     ^
      |                     id
a.cc:16:17: error: 'rep' was not declared in this scope
   16 |                 rep(i,V){
      |                 ^~~
a.cc: In member function 'void biconnected::dfs(int, int, int&)':
a.cc:24:17: error: 'visit' was not declared in this scope
   24 |                 visit[v] = true;
      |                 ^~~~~
a.cc:25:17: error: 'ord' was not declared in this scope
   25 |                 ord[v] = k++;
      |                 ^~~
a.cc:26:17: error: 'low' was not declared in this scope
   26 |                 low[v] = ord[v];
      |                 ^~~
a.cc:27:21: error: 'i' was not declared in this scope
   27 |                 rep(i,(int)G[v].size()){
      |                     ^
a.cc:27:28: error: 'G' was not declared in this scope
   27 |                 rep(i,(int)G[v].size()){
      |                            ^
a.cc:27:17: error: 'rep' was not declared in this scope
   27 |                 rep(i,(int)G[v].size()){
      |                 ^~~
a.cc: In member function 'void biconnected::add_edge(int, int)':
a.cc:46:13: error: 'G' was not declared in this scope
   46 |             G[u].push_back(v),G[v].push_back(u);
      |             ^
a.cc:47:13: error: 'check' was not declared in this scope
   47 |             check[u].push_back(P((int)check[v].size(),0));
      |             ^~~~~
a.cc:47:32: error: 'P' was not declared in this scope
   47 |             check[u].push_back(P((int)check[v].size(),0));
      |                                ^
a.cc: In member function 'void biconnected::restrict_dfs(int, int, int, int)':
a.cc:52:13: error: 'visit' was not declared in this scope
   52 |             visit[u] = true;
      |             ^~~~~
a.cc:53:13: error: 'cmp' was not declared in this scope
   53 |             cmp[u] = kind;
      |             ^~~
a.cc:54:17: error: 'i' was not declared in this scope
   54 |             rep(i,(int)G[u].size()){
      |                 ^
a.cc:54:24: error: 'G' was not declared in this scope
   54 |             rep(i,(int)G[u].size()){
      |                        ^
a.cc:54:13: error: 'rep' was not declared in this scope
   54 |             rep(i,(int)G[u].size()){
      |             ^~~
a.cc: In member function 'int biconnected::make_bcgraph()':
a.cc:68:17: error: 'graph' was not declared in this scope
   68 |                 graph.resize(V);
      |                 ^~~~~
a.cc:70:17: error: 'i' was not declared in this scope
   70 |             rep(i,node_size){
      |                 ^
a.cc:70:19: error: 'node_size' was not declared in this scope
   70 |             rep(i,node_size){
      |                   ^~~~~~~~~
a.cc:70:13: error: 'rep' was not declared in this scope
   70 |             rep(i,node_size){
      |             ^~~
a.cc:75:18: error: 'visit' was not declared in this scope
   75 |             fill(visit,visit+node_size,false);
      |                  ^~~~~
a.cc:75:13: error: 'fill' was not declared in this scope
   75 |             fill(visit,visit+node_size,false);
      |             ^~~~
a.cc:89:24: error: 'bridge' was not declared in this scope
   89 |             rep(i,(int)bridge.size()){
      |                        ^~~~~~