链接:click here

题意:

巡回赛

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描写叙述
世界拳击协会(WBA)是历史最悠久的世界性拳击组织,孕育了众多的世界冠军,尤其是重量级,差点儿造就了大家耳熟能详的所有伟大的拳王。

阿里、弗雷泽、福尔曼被称为“70年代重量级拳坛 三巨头”,是当之无愧的拳王,他们的得到的金腰带都刻有 WBA 字样。为庆贺世界拳击协会成立 50 周年,WBA 主席门多萨邀请 N 名拳击手进行了 M 场巡回比赛,每场比赛均可分出胜负,比赛过后组委会要对 N 名选手进行排序,对于每名拳手,必须满足该拳手所战胜过的对手所有排在其后才干对该排名惬意。

现给出 M 场比赛的胜负关系,请你帮组委会决定是否可以唯一确定这种排名,使得全部的拳击手都惬意,若能唯一确定则输出终于排名。

输入
第一行给出測试数据的组数 T(0<T<30),对于每组測试数据,首先依次给出N(1<=N<=26),M(0<=M<=1000)分别表示拳手数和比赛数,拳手的姓名依次为从 A開始的前 N 个大写字母,接下 M 行给出每场比赛的比赛结果,每行由两个大写字母组成,两者之间有一空格。

如 “A B”则表示在某场比赛中 A 战胜了 B。
输出
对于每组測试,若不存在唯一的排名序列则单行输出“No Answer”,若存在则按排名从高至低输出拳手的名字。
例子输入
3
4 4
A B
A C
B C
C D
4 4
A B
A C
B D
C D
3 3
A B
B A
A C
例子输出
ABCD
No Answer
No Answer
来源

【解题思路】:

DFS实现拓扑排序

代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn =30;
int t,n,m,V,i,j;
int g[maxn],topo[maxn],G[maxn][maxn];
bool DFS(int u) //DFS实现拓扑排序
{
g[u] = -1; //開始訪问该顶点
for(int v=0; v<V; v++)
if(G[u][v])
{
if(g[v]<0) return false; //c[v]=-1代表正在訪问该定点(即递归调用DFS(u)正在帧栈中。尚未返回)
else if(g[v]==0&&DFS(v)==0)return false;//(c[v]==0 && DFS(v)==false即当前顶点没有后即顶点时。
}
g[u]=1; //訪问结束
topo[--t]=u;
return true;
}
bool AOV_toposort()
{
t=V;
memset(g,0,sizeof(g));
for(int u = 0; u < V; u++)
if(!g[u])
if(!DFS(u))return false;
return true;
}
int main()
{
//freopen("1.txt","r",stdin);
//freopen("2.txt","w",stdout);
int nca,i,m;
char a[2],b[2];
cin>>nca;
while(nca--)
{
memset(G,0,sizeof(G));
cin>>V>>m;
for(i = 0; i < m; i++)
{
cin>>a>>b;
G[(a[0]-'A')][(b[0]-'A')] = 1;
}
if(AOV_toposort())
{
bool flag= true;
for(i=0; i<V-1; i++)
if(!G[topo[i]][topo[i+1]])
{
flag=false;
break;
}
if(flag)
{
for(i=0; i<V; i++)
printf("%c",topo[i]+'A');
puts("");
}
else
puts("No Answer");
}
else
puts("No Answer");
}
return 0;
}

NYOJ 496 [巡回赛-拓扑排序]的更多相关文章

  1. NYOJ 349 Sorting It All Out (拓扑排序 )

    题目链接 描述 An ascending sorted sequence of distinct values is one in which some form of a less-than ope ...

  2. nyoj 349 (poj 1094) (拓扑排序)

    Sorting It All Out 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 An ascending sorted sequence of distinct ...

  3. POJ--1094--Sorting It All Out||NYOJ--349--Sorting It All Out(拓扑排序)

    NYOJ的数据水一点,POJ过了是真的过了 /* 拓扑排序模板题: 每次输入都要判断有环与有序的情况,如果存在环路或者已经有序可以输出则跳过下面的输入 判断有序,通过是否在一个以上的入度为0的点,存在 ...

  4. nyoj--496--巡回赛(拓扑排序)

    巡回赛 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 世界拳击协会(WBA)是历史最悠久的世界性拳击组织,孕育了众多的世界冠军,尤其是重量级,几乎造就了大家耳熟能详的所 ...

  5. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  6. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  7. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 609  Solved: 318[Submit][Status][Di ...

  8. BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...

  9. 图——拓扑排序(uva10305)

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

随机推荐

  1. js页面文字选中后分享实现

    var $sinaMiniBlogShare = function(eleShare, eleContainer) { var eleTitle = document.getElementsByTag ...

  2. 启用Windows10的Linux子系统并安装图形界面

    前言 目前市面上的PC电脑主要运行着四大类系统,它们分别是微软的Windows.苹果的MacOS.Linux的发行版以及Unix类系统.其中Linux和Unix都是开源的,因此市面出现的众多基于Lin ...

  3. Go:struct

    一.使用方式 方式3和方式4返回的是:结构体指针,编译器底层对 p.Name 做了转化 *(p).Name,方便程序员使用. type Person struct { Name string Age ...

  4. Buffer.allocUnsafe()

    Buffer.allocUnsafe(size) size {Number} 分配一个 size 字节大小的新的非零填充(non-zero-filled)的 Buffer.size 必须小于等于 re ...

  5. Python爬虫例子(笔记,不适合参考,愿意看的可以看看)

    话不多说,直接上代码: import re import csv #爬虫的一个小例子,爬的是百度贴吧(网页版)某个帖子的各个楼层的用户名,发言内容和发言时间(使用到了正则表达式) source3.tx ...

  6. 在移动端H5开发中(关于安卓端position:fixed和position:absolute;和虚拟键盘冲突的问题,以及解决方案)

    一.在开发移动端webapp时,我们经常会遇到这样的问题,当我们需要在页面底部固定一个logo或者说明时,往往会采用position:fixed进行固定定位或者absolute定位到最底部 这是一个很 ...

  7. 模板 求GCD&LCM

    求最大公倍数 int GCD(int a,int b) { ) return b; else return GCD(b,a%b); } 求最小公倍数 int LCM(int a,int b) { re ...

  8. conflunce安装配置

    下载 下载Confluence-v5.4.4.zip包,其中包含   atlassian-confluence-5.4.4-x64.bin #程序二进制文件 confluence5.x-crack.z ...

  9. topcoder SRM 639 div2

    见这里 http://ygdtc.sinaapp.com/?p=257

  10. noip模拟赛 收集果子

    分析:显然的,树形dp,状态也很好想到:f[i][j]表示以i为根的子树收集到j个果子的方案数.转移的话就相当于是背包问题,每个子节点可以选或不选.如果不选子节点k的话,那么以k为根的子树的边无论断不 ...