/*
给定一组偏序关系,问最少第几步能确定次序
如果出现环,问第几步出现环
因为要求第几步确定次序或者第几步出现环,所以每次读入一个偏序关系就进行一次拓扑排序
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
const int N = ;
int in[N]; //入度
bool Map[N][N]; //临接矩阵此题可以随便用
char out[N]; //拓扑排序输出数组 int topsort( int n ) {
priority_queue<int,vector<int>,greater<int> > q; //优先队列忠实粉丝
int flag = ,k;
int zeroflag = ;
int num = ,temp[N];
memcpy(temp,in,sizeof(in));//拷贝
for( int i = ; i < n; i++ ) {
if( !in[i] ) q.push(i);
}
while( !q.empty() ) {
if( q.size() > )
zeroflag = ;//要注意在while里面判断 因为此过程中也可能出现入度0不止一个的情况
k = q.top();
q.pop();
num++;
out[num] = k + 'A'; //num计数 以存到out里面
for(int i = ; i < n; i++ )
if(Map[k][i]== && --temp[i] == )
q.push(i);
}
if( num != n ) return ;
if( zeroflag == ) return ;//多个点入度为零
return -;
}
int main(){
int n,m,k;
int step; //记录操作数
int circleflag,orderflag;
char s[];
while( scanf("%d%d", &n, &m) != EOF && n ){
circleflag=;orderflag=;
memset(Map,,sizeof(Map));
memset(in,,sizeof(in));
for( int i = ; i <= m; i++ ){
scanf("%s", s);
if( circleflag == && orderflag == ){ //已经判出了 就不读了
if(Map[s[]-'A'][s[]-'A'] == ){
circleflag=; //有环了
printf("Inconsistency found after %d relations.\n", i);
continue ;
}
if(Map[s[]-'A'][s[]-'A'] == ){
Map[s[]-'A'][s[]-'A'] = ;
in[s[]-'A']++;
}
k = topsort(n);
if( k == ){
circleflag=;
printf("Inconsistency found after %d relations.\n", i);
}
else if( k == - ){
orderflag=;
step=i; //记录位置
}
}
}
if(circleflag == && orderflag == )
printf("Sorted sequence cannot be determined.\n");
else if(orderflag == ){
printf("Sorted sequence determined after %d relations: ", step);
for(int i=; i<=n; i++)
printf("%c", out[i]);
printf(".\n");
}
}
return ;
}

poj1094 恶心题,,每次加边进行判断的更多相关文章

  1. poj3502 恶心题

    巨恶心的一个题::>_<:: 题意:给出航班航线和大陆,找航线上距离大陆最远的某一点距离大陆边缘的距离 标准算法:二分答案,从大陆边界向外扩展,扩展出来的面积会覆盖航线.找出航线上最后被覆 ...

  2. 暑假集训——cf热身赛部分题有感加其题解

    刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作, ...

  3. POJ:2429-GCD & LCM Inverse(素数判断神题)(Millar-Rabin素性判断和Pollard-rho因子分解)

    原题链接:http://poj.org/problem?id=2429 GCD & LCM Inverse Time Limit: 2000MS Memory Limit: 65536K To ...

  4. 检测js代码是否已加载的判断代码

    该方法不局限于jQuery的检测,对与任何Javascript变量或函数都是通用的. 当前网页加载jQuery后,jQuery()或$()函数将会被定义,所以检测jQuery是否已经加载存在以下2种方 ...

  5. QAU 18校赛 J题 天平(01背包 判断能否装满)

    问题 J: 天平 时间限制: 1 Sec  内存限制: 128 MB提交: 36  解决: 9[提交][状态][讨论版][命题人:admin] 题目描述 天平的右端放着一件重量为w的物品.现在有n个重 ...

  6. <LC刷题二>回文字符串判断之leetcode125&234

    其他刷题记录见博客首页 1,leecode125 验证回文串 原题: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. ...

  7. 蓝桥杯 第四届C/C++预赛真题(5) 前缀判断(水题)

    题目标题:前缀判断 如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL. 比如:"abcd1234" 就包含了 ...

  8. 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 & 计算整数的7倍

    出题:一个长度为N的数组,其中的元素取值范围是1到N,要求快速判断数组是否存在重复数字: 分析: 解法1:如果N个元素的范围都是在1到N,所以如果没有重复元素,则每一个位置恰好可以对应数组中的一个元素 ...

  9. javascript异步延时加载及判断是否已加载js/css文件

    <html> <head> <script type="text/javascript"> /**======================= ...

随机推荐

  1. 通过Java构造参数列表

    背景:我们在进行性能测试时,需要构造测试数据,即参数化文件,如下: 上面的文件内容,我们可以通过Java代码轻松实现,主要代码解释: All 代码(其实我也看不懂,但是会改就行啦) package f ...

  2. ssm框架所需jar包整理及各jar包的作用

    以下是我目前新搭建的ssm项目的pom.xml 之后如果需要其他的话再加 <?xml version="1.0" encoding="UTF-8"?> ...

  3. java 写 Excel(不生成实体文件,写为流的形式)

    java 写 Excel(不生成实体文件,写为流的形式) public String exportReportExcel(String mediaCode, List<SimpleMediaRe ...

  4. 下载最新的glibc库并临时使用,而不污染原有系统环境

    以下参考了文中提到的博文,那篇博文其中有他安装时报错的内容,以及如何解决的,特别是报错2,值得学习借鉴 另外升级glibc,这篇文章有补充https://blog.csdn.net/fzuzhangh ...

  5. Python概念(八)字符串格式化:%和.format

    https://www.cnblogs.com/nulige/p/6115793.html

  6. wx小程序-音频视频!

    1.音乐的启动跟暂停 dom里面图片切换的另一种方法 通过变量 改变路径 2.监听 在onload里面 3.定义了一个全局变量 然后在但页面中获取 app.js 单页面中 app.js 的三个生命周期

  7. Javascript - ExtJs - Ext.form.Panel组件

    FormPanel组件(Ext.form.FormPanel) logogram:Ext.form.Panel | xtype:form Ext.form.Panel.配置 frame }//旗下所有 ...

  8. 微信支付-H5网页支付开通流程

    简介  H5 支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便的从外 ...

  9. tp5.0 SHOW COLUMNS FROM 生成数据表字段缓存

    TP5.0 生成数据表字段缓存 =控制台执行以下命令= 1.生成指定数据库的所有表字段缓存 php think optimize:schema --db databaseName 2.生成指定数据表的 ...

  10. Oracle Instance and Database