hdu 2094拓扑排序map实现记录

原创 2013年12月03日 21:14:23
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<stdlib.h>
#define N 1100
#include<map>
using namespace std;
int pre[N],indegree[N];
int find(int x) {
if(pre[x]!=x)
pre[x]=find(pre[x]);
return pre[x];
}
int judge(int n) {
int  k=0,i;
for(i=1;i<=n;i++)
if(indegree[i]==0)
k++;
if(k==1)
return 1;
return 0;
}
map<string,int>p;
int main() {
int n,i,j,h,ans;
char s[N];
while(scanf("%d",&n),n) {
  p.clear();
memset(indegree,0,sizeof(indegree));
for(i=1;i<N;i++)
pre[i]=i;
h=0;
while(n--) {
scanf("%s",s);
if(p.find(s)==p.end())
p[s]=++h;
i=p[s];
scanf("%s",s);
if(p.find(s)==p.end())
p[s]=++h;
j=p[s];
pre[find(i)]=pre[find(j)];
indegree[j]++;
}
ans=0;
for(i=1;i<=h;i++)
if(find(i)==i)
ans++;
if(judge(h)&&ans==1) 
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu 拓扑排序 题目归纳

拓扑排序 定义和前置条件: 定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面。 ...
  • Simon_coder
  • Simon_coder
  • 2016年06月01日 17:57
  • 3309

拓扑排序(Topologicalsort)之Java实现

拓扑排序算法介绍 拓扑排序解决的是一系列相互依赖的事件的排序问题,比如Ant中有很多的Task,而某些Task依赖于另外的Task,编译之前需要清理空间,打包之前要先编译,但其它一些Task处理顺序可...
  • kimylrong
  • kimylrong
  • 2013年12月09日 11:45
  • 12610

hdu 2094 产生冠军(拓扑排序)

产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub...
  • su20145104009
  • su20145104009
  • 2015年08月11日 09:44
  • 1550

hdu 2094 产生冠军 实实在在的水题啊!就是连拓扑排序都不要。直接统计入度就可以了

产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi...
  • Lionel_D
  • Lionel_D
  • 2015年02月20日 18:19
  • 635

HDU-2094产生冠军-拓扑排序

解题思路:记录每个选手的入度数,入度为0的人即是没有人打败过他的。1.如果有超过1个入度为0的,就是有多个人没有被打败,当然就无法判断谁是冠军啦~   2.如果没有一个入度为0的人,就是每个人都被打败...
  • u011538668
  • u011538668
  • 2013年08月28日 13:51
  • 723

【拓扑排序】hdu2094 产生冠军

产生冠军 http://acm.hdu.edu.cn/showproblem.php?pid=2094 Problem Description 有一群人,打乒乓球比赛,两两捉对撕...
  • ACM_Ted
  • ACM_Ted
  • 2012年06月05日 13:05
  • 1219

HDU 2094产生冠军(拓扑排序)

产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub...
  • u010372095
  • u010372095
  • 2015年04月21日 19:48
  • 646

HDU/HDOJ 2094 拓扑排序or暴力

产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi...
  • WuBaizhe
  • WuBaizhe
  • 2017年01月21日 09:52
  • 478

杭电ACM2094——产生冠军~~拓扑排序

题目的意思,如题。很容易明白。 解决的方法就是拓扑排序,就可以很容易的解决了。 每输入一对选手,判断两个选手是否出现过,没有出现过,新建一个头结点,加入到邻接表中,更新结点的入度。 最后判断是否...
  • qq_25425023
  • qq_25425023
  • 2015年07月23日 23:26
  • 687

HDOJ 2094 产生冠军 (拓扑排序)

产生冠军 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Su...
  • yzr1183739890
  • yzr1183739890
  • 2015年11月24日 20:32
  • 319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2094拓扑排序map实现记录
举报原因:
原因补充:

(最多只允许输入30个字)