#include #include #include #include #include #include #include #include #define LL long long using namespace std; const int MAXN=400005; const int MAXM=400005; int n,m,w,u,v; bool vis[MAXN]; struct Edge { int to,next,flow; }edge[MAXM]; int head[MAXN],tot; void add(int u,int v,int w) { edge[tot].to=v; edge[tot].flow=w; edge[tot].next=head[u]; head[u]=tot++; } int cnt=0; void dfs(int s){ for(int i=head[s];~i;i=edge[i].next){ int v=edge[i].to; if(vis[v])continue; if(edge[i].flow==0)cnt++; else continue; vis[v]=true; dfs(v); } } int main() { //freopen("in.txt","r",stdin); int T;scanf("%d",&T); while(T--){ tot=0; memset(head,-1,sizeof(head)); scanf("%d",&n); for(int i=0;iv)swap(u,v); add(u,v,w); //add(v,u,w); } memset(vis,false,sizeof(vis)); int ans=0; for(int i=1;i<=n;++i){ if(!vis[i]){ cnt=1; dfs(i); //cout<