#include <bits/stdc++.h>
using namespace std;
const int maxn = 3E2 + 5;
int G1[maxn][maxn], G2[maxn][maxn], gx[maxn], gy[maxn], to[maxn], n, m, x, y, T, kase;
bool check()
{
for (int i = n - 1; i >= 0; i--)
{
memset(to, 0, sizeof(to));
for (int j = gy[i] - 1; j >= 0; j--)
for (int k = gx[G2[i][j]] - 1; k >= 0; k--)
to[G1[G2[i][j]][k]]++;
for (int j = 0; j < n; j++)
if (to[j] && to[j] != gy[i])
return false;
}
return true;
}
int main(int argc, char const *argv[])
{
ios::sync_with_stdio(false); cin.tie(NULL);
cin >> T;
while (T--)
{
cin >> n >> m;
memset(G1, 0, sizeof(G1));
memset(G2, 0, sizeof(G2));
memset(gx, 0, sizeof(gx));
memset(gy, 0, sizeof(gy));
while (m--)
{
cin >> x >> y;
G1[x][gx[x]++] = y;
G2[y][gy[y]++] = x;
}
cout << "Case #" << ++kase << ": " << (check() ? "YES" : "NO") << endl;
}
return 0;
}
uva 11175
最新推荐文章于 2023-01-25 23:09:17 发布