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\n", ok ? "YES" : "NO"); 24 } 25 26 return 0; 27 }