Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <stack>#include <map>#include <set>#include <queue>using namespace std;typedef long long ll;typedef pair<int,int> pii;#define N 20005#define M 200005#define MIN(a,b) ((a) < (b) ? (a) : (b))#define MAX(a,b) ((a) > (b) ? (a) : (b))int n,m,head[N],ne,dfn[N],low[N],cnt,fa[N],inStack[N],in[N],cntSCC;ll val[N],new_val[N],dis[N];struct Edge{int v,next;}e[M];void add_edge(int u,int v){e[ne].v=v,e[ne].next=head[u],head[u]=ne++;}stack<int> st;void tarjan(int u){dfn[u] = low[u] = ++cnt;st.push(u);inStack[u] = 1;for(int i = head[u];i != -1;i = e[i].next){