hdu2094—看似拓撲實際上是一道思維題
阿新 • • 發佈:2017-07-21
pan blog space acm insert hdu2094 == sin typedef
HDU2094 產生冠軍
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2094
題意:中文題,就不解釋了。題意已經非常清楚了。
這道題的看起來像是一個拓撲排序的問題實際上拓撲感覺做不了,可能可以做了吧?但是我沒想到,估計也比較麻煩吧。這裏介紹一種比較簡單的做法,就是一種思維,如果存在冠軍(所有人都可以被他打敗),這個人肯定沒有敗過,而其他人都敗過,所以我們只需要確定所有人的人數,和敗者的人數(去重以後,所以需要用set,因為一個敗者會敗給多個人,所以在多個對局中出現)。如果所有人的數量與敗者的數量的差是1,說明存在冠軍,否則,不存在,直接看代碼吧!
//Author: xiaowuga #include <bits/stdc++.h> #define maxx INT_MAX #define minn INT_MIN #define inf 0x3f3f3f3f const long long N=100; using namespace std; typedef long long L; set<string>a,b; int main() { ios::sync_with_stdio(false);cin.tie(0); int n; while(cin>>n&&n){ a.clear();b.clear();for(int i=0;i<n;i++){ string x,y; cin>>x>>y; a.insert(x); a.insert(y); b.insert(y); } if(a.size()-b.size()==1) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
很簡單的一道題,主要靠思維吧,感覺和拓撲沒什麽關系。
hdu2094—看似拓撲實際上是一道思維題