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