HDOJ 2094(拓扑排序)

 1 #include <iomanip>
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <algorithm>
 7 #include <queue>
 8 #include <stack>
 9 #include <vector>
10 #include <map>
11 using namespace std;
12 int n,m,inbug[1100];
13 map<string,int>mp;
14 int main(int argc, char *argv[])
15 {
16     while(scanf("%d",&n)!=EOF)
17     {
18         if(n==0)
19         break;
20         mp.clear();
21         memset(inbug,0,sizeof(inbug));
22         int num=1;
23         for(int i=0;i<n;i++)
24         {
25             string a,b;
26             cin>>a>>b;
27             if(!mp[a])mp[a]=num++;
28             if(!mp[b])mp[b]=num++;
29             inbug[mp[b]]++;
30         }
31         int ans=0;
32         for(int i=1;i<num;i++)
33         {
34             if(inbug[i]==0)
35             ans++;
36         }
37         if(ans==1)
38         printf("Yes\n");
39         else
40         printf("No\n");
41     }
42     return 0;
43 }

原文地址:https://www.cnblogs.com/huluxin/p/9833746.html

时间: 2024-10-17 05:31:29

HDOJ 2094(拓扑排序)的相关文章

HDU 2094 拓扑排序

产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12031    Accepted Submission(s): 5583 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能

HDOJ 3342 Legal or Not 【拓扑排序】

题意:判断是否成环. 策略:如题. 这道题就是简单的拓扑排序题,但是要注意一点要去重复的数据.我用了两种结构体:链式前向星和邻接矩阵. 代码1:(用链式前向星)(不用增加去重) #include<stdio.h> #include<string.h> #include<queue> #define INF 0x3f3f3f3f #define MAXN 105 struct EdgeNode{ int to; int next; }edges[MAXN]; int he

hdoj 1085 确定比赛名次 【拓扑排序】

中文题,不解释. 这是我的第一道拓扑排序题,先来讲一下什么是拓扑排序: 拓扑排序其实就是如果要进行某一项活动的时候,它的基础活动要先进行.比如说,学概率论之前必须要学会高等数学,那么高等数学就是学概率论的前提条件,这就牵涉到先后课程怎么学习,就是谁先学谁后学习, 拓扑排序就是解决这类问题的. 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1285 代码: #include<stdio.h> #include<string.h> boo

HDOJ 2647 Reward 【逆拓扑排序+分层】

题意:每一个人的基础工资是888. 因为一部分人要显示自己水平比較高,要求发的工资要比其它人中的一个人多.问你能不能满足他们的要求,假设能的话终于一共要发多少钱,假设不能就输出-1. 策略:拓扑排序. 这道题有些难点:一:数据大,建二维数组肯定不行,要换其它的数据结构(vector, 或者是链式前向星(本题代码用的是链式前向星)): 二:要逆拓扑排序(就是将++in[b]换成++in[a]). 三要分层次(依据上一个的钱数+1就可以). 不懂什么是链式前向星 移步:http://blog.csd

hdoj 4324 Triangle LOVE【拓扑排序判断是否存在环】

Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 3566    Accepted Submission(s): 1395 Problem Description Recently, scientists find that there is love between any of two people. For

hdoj 4857 逃生(逆向拓扑排序+优先队列)

逃生 点击打开链接 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2161    Accepted Submission(s): 608 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前

拓扑排序/DFS HDOJ 4324 Triangle LOVE

题目传送门 题意:判三角恋(三元环).如果A喜欢B,那么B一定不喜欢A,任意两人一定有关系连接 分析:正解应该是拓扑排序判环,如果有环,一定是三元环,证明. DFS:从任意一点开始搜索,搜索过的点标记,否则超时.看是否存在两点路程只差等于2,如果存在,则说明有上述的三角环.其他做法. 收获:DFS搜索一定要用vis数组啊,否则很容易超时的 代码(拓扑排序): /************************************************ * Author :Running_T

HDOJ 5098 Smart Software Installer 拓扑排序

拓扑排序: 两个队列,一个放不需要重启入度为0的,一个放需要重启入度为0的....从不需要重启的队列开始,每弹出一个数就更新下入度,遇到入读为0的就加入到相应队列里,当队列空时,记录重启次数+1,交换队列..一直到两个队列都为空 Smart Software Installer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 78   

hdoj-1811-Rank of Tetris【并查集+拓扑排序】

Rank of Tetris Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6763 Accepted Submission(s): 1901 Problem Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子

HDU 3342 Legal or Not (最短路 拓扑排序?)

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6580    Accepted Submission(s): 3088 Problem Description ACM-DIY is a large QQ group where many excellent acmers get together. It is