1003 - Drunk


PDF (English)
Statistics
Forum

Time Limit: 2 second(s)
Memory Limit: 32 MB

One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So, one day I was talking to him, about his drinks! He began to describe his way of drinking. So, let me share his ideas a bit. I am expressing in my words.

There are many kinds of drinks, which he used to take. But there are some rules; there are some drinks that have some pre requisites. Suppose if you want to take wine, you should have taken soda, water before it. That's why to get real drunk is not that easy.

Now given the name of some drinks! And the prerequisites of the drinks, you have to say that whether it's possible to get drunk or not. To get drunk, a person should take all the drinks.

Input

Input starts with an integer T (≤ 50), denoting the number of test cases.

Each case starts with an integer m (1 ≤ m ≤ 10000). Each of the next m lines will contain two names each in the format a b, denoting that you must have a before having b. The names will contain at most10 characters with no blanks.

Output

For each case, print the case number and 'Yes' or 'No', depending on whether it's possible to get drunk or not.

Sample Input

2

2

soda wine

water wine

3

soda wine

water wine

wine water

Output for Sample Input

Case 1: Yes

Case 2: No

::学习一个新算法,总没那么容易,今天又因为一个弄错一个字母找了半天*.*!!

   1: #include <iostream>

   2: #include <cstdio>

   3: #include <algorithm>

   4: #include <cstring>

   5: #include <map>

   6: using namespace std;

   7: const int maxn=11000;

   8: int head[maxn],in[maxn];

   9: bool vis[maxn];

  10: int ant,cas=1,id;

  11:  

  12: map<string,int>a;

  13: struct EDGE{

  14:     int v, next;

  15:     EDGE(){}

  16:     EDGE(int _v, int _next){v = _v, next = _next;}

  17: }e[maxn];

  18: int ecnt;

  19:  

  20: void add(int u, int v){

  21:     e[ecnt] = EDGE(v, head[u]);

  22:     head[u] = ecnt++;

  23: }

  24:  

  25: bool topo(){

  26:     memset(vis, 0, sizeof(vis));

  27:  

  28:     for(int t = 0; t < id; t++){

  29:         int u;

  30:         for(u = 0; u < id; u++)

  31:             if(!vis[u] && !in[u])

  32:                 break;

  33:         if(u >= id)

  34:             return false;

  35:  

  36:         vis[u] = true;

  37:         in[u]--;

  38:         for(int i = head[u]; i != -1; i = e[i].next){

  39:             int v = e[i].v;

  40:             in[v]--;

  41:         }

  42:     }

  43:     return true;

  44: }

  45:  

  46: void solve()

  47: {

  48:     int n;

  49:     ecnt=0,id=0;

  50:     a.clear();

  51:     memset(head,-1,sizeof(head));

  52:     memset(in,0,sizeof(in));

  53:     cin>>n;

  54:  

  55:     while(n--)

  56:     {

  57:         string x,y;

  58:         cin>>x>>y;

  59:  

  60:         if(a.find(x)==a.end()) a[x]=id++;

  61:         if(a.find(y)==a.end()) a[y]=id++;

  62:         int u=a[x],v=a[y];

  63:         add(u,v);

  64:         in[v]++;

  65:     }

  66:     if(topo())

  67:         cout<<"Yes"<<endl;

  68:     else

  69:         cout<<"No"<<endl;

  70: }

  71:  

  72: int main()

  73: {

  74:     ios::sync_with_stdio(false);

  75:     int t, cas = 0;

  76:     cin>>t;

  77:     while(t--){

  78:         cout<<"Case "<< (++cas)<<": ";

  79:         solve();

  80:     }

  81:     return 0;

  82: }

Loj 1003–Drunk(拓扑排序)的更多相关文章

  1. Lightoj 1003 - Drunk(拓扑排序)

    One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So ...

  2. Lightoj 1003 - Drunk(拓扑排序判断是否有环 Map离散化)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1003 题意是有m个关系格式是a b:表示想要和b必须喝a,问一个人是否喝醉就看一个人是 ...

  3. [LOJ 3101] [Luogu 5332] [JSOI2019]精准预测(2-SAT+拓扑排序+bitset)

    [LOJ 3101] [Luogu 5332] [JSOI2019]精准预测(2-SAT+拓扑排序+bitset) 题面 题面较长,略 分析 首先,发现火星人只有死和活两种状态,考虑2-SAT 建图 ...

  4. 洛谷 P3975 / loj 2102 [TJOI2015] 弦论 题解【后缀自动机】【拓扑排序】

    后缀自动机入门. 题目描述 为了提高智商,ZJY 开始学习弦论. 这一天,她在<String theory>中看到了这样一道问题:对于一个给定的长度为 \(n\) 的字符串,求出它的第 \ ...

  5. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

    组合计数的一道好题.什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n​\) 个穴位,穴位的编号为 \(1\sim n​\).有若干条有向的脉络连接着这些穴位. ...

  6. 洛谷P4332 [SHOI2014]三叉神经树(LCT,树剖,二分查找,拓扑排序)

    洛谷题目传送门 你谷无题解于是来补一发 随便百度题解,发现了不少诸如树剖\(log^3\)LCT\(log^2\)的可怕描述...... 于是来想想怎么利用题目的性质,把复杂度降下来. 首先,每个点的 ...

  7. LightOJ1003---Drunk(拓扑排序判环)

    One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So ...

  8. HDU2094产生冠军 (拓扑排序)

    HDU2094产生冠军 Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认 ...

  9. LightOJ - 1003 Drunk

    One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So ...

随机推荐

  1. Ubuntu配置任意版本的apt-get镜像

    我们知道,迄今为止,Ubuntu已有多个发行版,如11.04.11.10,以至于现在最新的16.*.而我们平常通过apt-get来安装软件,如果OS版本不同,那么镜像源的配置就不同,否则就会出现找不到 ...

  2. 我的Machine Learning学习之路

    从2016年年初,开始用python写一个简单的爬虫,帮我收集一些数据. 6月份,开始学习Machine Learning的相关知识. 9月开始学习Spark和Scala. 现在想,整理一下思路. 先 ...

  3. mysql innodb表 utf8 gbk占用空间相同,毁三观

    昨天因为发生字符集转换相关错误,今天想验证下utf8和gbk中英文下各自空间的差距.这一测试,绝对毁三观,无论中文还是中文+英文,gbk和utf8占用的实际物理大小完全相同,根本不是理论上所述的“UT ...

  4. 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)

    即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...

  5. Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋…

    说了很久要写Telegram的故事,一直拖延没有写.在我拖延的这段时间里面,Telegarm继续快速增长,前几天,在旧金山的TechCrunch Disrupt活动上,创始人Durov说现在Teleg ...

  6. python基础(2)

    1.lambda函数 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,函数同样有简单的表示方法 # ###################### 普通函数 ######### ...

  7. ssh无法登录linux服务器的解决办法

    最近之前使用的一台linux服务器被长官重装系统了,导致ssh登录的时候出现如下错误: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  8. This application is currently offline. To enable the application, remove the app_offline.htm file from the application root directory.

    IIS提示:This application is currently offline. To enable the application, remove the app_offline.htm f ...

  9. 3.0之后在LinearLayout里增加分割线

    android:divider="@drawable/shape"<!--分割线图片--> android:showDividers="middle|begi ...

  10. java.lang.RuntimeException: Fail to connect to camera service问题

    做音视频录制功能的真机调试的时候出现这个问题 错误意思为无法连接到相机服务 可能由两种情况导致 1.配置清单文件没有设置相应的权限 <uses-permission android:name=& ...