hdu2094(拓扑排序)
2015-09-20 21:46
281 查看
思路:因为是要确定冠军,那么必然关系都是明确的,,,如果存在度数为0的个数大于1的话就说明这几个人的关系是不确定的,也就必然不能确定冠军出来。
题目链接
题目链接
/***************************************** Author :Crazy_AC(JamesQi) Time :2015 File Name : *****************************************/ // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <algorithm> #include <iomanip> #include <sstream> #include <string> #include <stack> #include <queue> #include <deque> #include <vector> #include <map> #include <set> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <limits.h> using namespace std; #define MEM(a,b) memset(a,b,sizeof a) typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> ii; const int inf = 1 << 30; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; int n; int in[1010]; map<string,int> mp; int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); while(~scanf("%d",&n) && n){ // cout << "n = " << n << endl; string name1,name2; mp.clear(); MEM(in, 0); int tot = 1; for (int i = 1;i <= n;i++){ cin >> name1 >> name2; if (!mp[name1]) mp[name1] = tot++; if (!mp[name2]) mp[name2] = tot++; in[mp[name2]]++; } int cnt = 0; for (int i = 1;i < tot;i++){ if (in[i] == 0) cnt++; if (cnt > 1) break; } if (cnt == 1) printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- 谁说转载的文章用户就不喜欢了?
- springAOP
- HandList类(Leap:: HandList)
- 类修饰符的含义 成员变量修饰符 成员方法修饰符的含义
- Java过滤器与SpringMVC拦截器之间的关系与区别
- PCB-从零开始
- css
- java集合类
- ViewPager的缓存机制
- *LeetCode-Minimum Path Sum
- 杭电2897邂逅明下邂逅明下
- ios-新浪微博开发20-控制器的切换
- sh_gamit 快速星历错误
- 45-90秒掌握10本最畅销创业书籍干货精华!(一)
- 八位 UUID
- ad15 各个层的含义
- get a new level 25 battle pet in about an hour
- 剑指offer | 从尾到头打印链表
- STL容器
- SQL localdb 连接字符串