
看到大神说location的值不会超过1000,所以这就简单很多了,用一个deg数组记录下来每个点的度,出度-1,入读+1这样。
最后判断每个点的度是否为0即可。
至于为什么会这样,据说是套数据套出来的,比如在代码里加一句if(a >= 1000) for(;;),get新技能!
如果按正常来做的话,我能想到的就是遍历map了。
#include <cstdio>
#include <cstring> const int maxn = ;
int deg[maxn]; int main()
{
//freopen("in.txt", "r", stdin); int n;
while(scanf("%d", &n) == && n)
{
memset(deg, , sizeof(deg));
int a, b;
for(int i = ; i < n; i++)
{
scanf("%d%d", &a, &b);
deg[a]++; deg[b]--;
}
bool ok = true;
for(int i = ; i < maxn; i++) if(deg[i]) ok = false;
printf("%s\n", ok ? "YES" : "NO");
} return ;
}
代码君