Rt。
全WA
#include<bits/stdc++.h>
using namespace std;
int n,m,t;
vector<int>edge[1000010];
int vis[1000010],f[1000010];
bool dfs(int u)
{
for(int i=0;i<edge[u].size();i++)
{
int v=edge[u][i];
if(!vis[v])
{
vis[v]=1;
if(!f[v]||dfs(f[v]))
return f[v]=u,1;
}
}
return 0;
}
int k[1000010],g[1000010];
void solve()
{
int sum=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>k[i];
for(int i=1;i<=n;i++)
{
cin>>g[i];
if(k[i]==1&&g[i]==1)
sum++;
}
for(int i=1;i<=n;i++)
{
if(k[i]==1)
edge[i].push_back(i);
for(int j=1;j<=n;j++)
{
int l;
cin>>l;
if(l==1&&(k[i]==1&&g[i]==0))
{
edge[i].push_back(j);
}
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
ans+=dfs(i);
}
if(ans>=n-sum)
cout<<"^_^\n";
else
cout<<"T_T\n";
}
int main()
{
int T;
cin>>T;
while(T--)
{
solve();
}
return 0;
}