UVa 10763 (STL) Foreign Exchange

看到大神说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[b]--;
20         }
21         bool ok = true;
22         for(int i = 0; i < maxn; i++) if(deg[i]) ok = false;
23         printf("%s
", ok ? "YES" : "NO");
24     }
25 
26     return 0;
27 }
代码君
原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4453633.html