Language: C

const int N=10010;
const int E=200010;

class Graph
{
	public:
	int pnt[E],nxt[E],id[E];
	int head[N],nv,ne;

	void init(const int v)
	{
		nv=v;
		ne=0;
		memset(head,255,sizeof(head));
	}

	void add(const int u,const int v,const int i)
	{
		pnt[ne]=v,id[ne]=i,nxt[ne]=head[u],head[u]=ne++;
		pnt[ne]=u,id[ne]=i,nxt[ne]=head[v],head[v]=ne++;
	}
}ga,gb;

int dfn[N],low[N],idx;
int belong[N],bcnt;
int stk[N],top;
bool vis[N];

void tarjan(const Graph &g,const int u,const int f)
{
	int i,v,e;
	dfn[u]=low[u]=idx++;
	stk[++top]=u;
	vis[u]=1;
	for(i=g.head[u];~i;i=g.nxt[i])
	{
		e=g.id[i];
		if(dfn[v=g.pnt[i]]<0)
		{
			tarjan(g,v,e);
			low[u]=min(low[u],low[v]);
		}
		else	if(e!=f && vis[v] && low[u]>dfn[v])	low[u]=dfn[v];
	}
	if(dfn[u]==low[u])
	{
		do
		{
			v=stk[top--];
			vis[v]=0;
			belong[v]=bcnt;
		}while(v!=u);
		bcnt++;
	}
}
void bcc(const Graph &g)
{
	top=bcnt=idx=0;
	memset(dfn,255,sizeof(dfn));
	memset(vis,0,sizeof(vis));
	for(int i=0;i<g.nv;i++)	if(dfn[i]<0)	tarjan(g,i,-1);
}
void shrink(const Graph &ga,Graph &gb)
{
	int v,cnt=1;
	gb.init(bcnt);
	for(int i=0;i<ga.nv;i++)	for(int j=ga.head[i];~j;j=ga.nxt[j])
		if(belong[i]!=belong[v=ga.pnt[j]])
			gb.add(belong[i],belong[v],cnt++);
}

Compiler output:
main.c:4:1: error: unknown type name 'class'
    4 | class Graph
      | ^~~~~
main.c:5:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
    5 | {
      | ^
main.c:22:2: warning: data definition has no type or storage class
   22 | }ga,gb;
      |  ^~
main.c:22:2: error: type defaults to 'int' in declaration of 'ga' [-Wimplicit-int]
main.c:22:5: error: type defaults to 'int' in declaration of 'gb' [-Wimplicit-int]
   22 | }ga,gb;
      |     ^~
main.c:24:5: error: variably modified 'dfn' at file scope
   24 | int dfn[N],low[N],idx;
      |     ^~~
main.c:24:12: error: variably modified 'low' at file scope
   24 | int dfn[N],low[N],idx;
      |            ^~~
main.c:25:5: error: variably modified 'belong' at file scope
   25 | int belong[N],bcnt;
      |     ^~~~~~
main.c:26:5: error: variably modified 'stk' at file scope
   26 | int stk[N],top;
      |     ^~~
main.c:27:1: error: unknown type name 'bool'
   27 | bool vis[N];
      | ^~~~
main.c:1:1: note: 'bool' is defined in header '<stdbool.h>'; this is probably fixable by adding '#include <stdbool.h>'
  +++ |+#include <stdbool.h>
    1 | const int N=10010;
main.c:27:6: error: variably modified 'vis' at file scope
   27 | bool vis[N];
      |      ^~~
main.c:29:19: error: type defaults to 'int' in declaration of 'Graph' [-Wimplicit-int]
   29 | void tarjan(const Graph &g,const int u,const int f)
      |                   ^~~~~
main.c:29:25: error: expected ';', ',' or ')' before '&' token
   29 | void tarjan(const Graph &g,const int u,const int f)
      |                         ^
main.c:56:16: error: type defaults to 'int' in declaration of 'Graph' [-Wimplicit-int]
   56 | void bcc(const Graph &g)
      |                ^~~~~
main.c:56:22: error: expected ';', ',' or ')' before '&' token
   56 | void bcc(const Graph &g)
      |                      ^
main.c:63:19: error: type defaults to 'int' in declaration of 'Graph' [-Wimplicit-int]
   63 | void shrink(const Graph &ga,Graph &gb)
      |                   ^~~~~
main.c:63:25: error: expected ';', ',' or ')' before '&' token
   63 | void shrink(const Graph &ga,Graph &gb)
      |                         ^