poj 1094(拓扑排序)
http://poj.org/problem?id=1094
题意:给你m个字母,有n个判断语句。求在哪个语句就可以判断出这个是不是一个环,或者在哪个语句可以判断出这些字母的排序规则,或者就是不能确定。
思路:每输入一次,进行一次排序,看会不会构成环或者已经可以确定了判断规则。
#include <stdio.h>
#include <string.h> char ans[]; int indegree[]; bool mp[][]; int topsort(int n)
{
int i,j,m,flag,c=,tmp[],l=;
for(i=;i<n;i++)
tmp[i]=indegree[i];
for(i=;i<n;i++)
{
m=;
for(j=;j<n;j++)
if(tmp[j]==) {m++;flag=j;}
if(m==) return ; //如果全部的度都是0的话,那么说明有环。
ans[c++]=flag+'A';
if(m>) l=-; //这个不能用return -1,因为成环不一定是要成一个大环,可以几个字母成一个小环。
tmp[flag]--;
for(j=;j<n;j++)
if(mp[flag][j]) tmp[j]--;
}
return l;
} int main()
{
freopen("in.txt","r",stdin);
int m,n,sign;
char inp[];
while(scanf("%d%d",&m,&n),m||n)
{
memset(mp,false,sizeof(mp));
memset(indegree,,sizeof(indegree));
sign=;
for(int i=;i<=n;i++)
{
scanf("%s",inp);
if(sign) continue;
mp[inp[]-'A'][inp[]-'A']=true;
indegree[inp[]-'A']++;
int s=topsort(m);
if(s==)
{
printf("Inconsistency found after %d relations.\n",i);
sign=;
}
else if(s==)
{
printf("Sorted sequence determined after %d relations: ",i);
for(int j=;j<m;j++)
printf("%c",ans[j]);
printf(".\n");
sign=;
}
}
if(!sign)
printf("Sorted sequence cannot be determined.\n");
}
return ;
}
poj 1094(拓扑排序)的更多相关文章
- Sorting It All Out POJ - 1094 拓扑排序
题意:给N个字母,和M个偏序关系 求一个可确定的全序,可确定是指没有其他的可能例如A>B D>B 那么有ADB DAB两种,这就是不可确定的其中,M个偏序关系可以看做是一个一个按时间给出的 ...
- nyoj 349 (poj 1094) (拓扑排序)
Sorting It All Out 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 An ascending sorted sequence of distinct ...
- POJ 1094 拓扑排序
Description: 规定对于一个只有大写字母的字符串是有大小顺序的.如ABCD.即A<B.B<C.C<D.那么问题来了.现在第一行给你n, m代表序列里只会出现前n的 ...
- poj 3687(拓扑排序)
http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...
- POJ 3249 拓扑排序+DP
貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2333333.... Description: MR.DOG 在找工作的过程中 ...
- poj 3249 拓扑排序 and 动态规划
思路:我们首先来一遍拓扑排序,将点按先后顺序排列于一维数组中,然后扫描一遍数组,将每个点的出边所连接的点进行更新,即可得到最优解. #include<iostream> #include& ...
- poj 2585 拓扑排序
这题主要在于建图.对9个2*2的小块,第i块如果出现了不等于i的数字,那么一定是在i之后被brought的.可以从i到该数字建一条边. 图建好后,进行一次拓扑排序,判段是否存在环.若存在环,那么就是B ...
- Poj(3687),拓扑排序,
题目链接:http://poj.org/problem?id=3687 题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号 ...
- POJ 1128 拓扑排序 + 深搜
/* (⊙v⊙)嗯 貌似是一个建图 拓扑+深搜的过程.至于为什么要深搜嘛..一个月前敲得题现在全部推了重敲,于是明白了.因为题意要求如果有多个可能的解的话. * 就要输出字典序最小的那个.所以可以对2 ...
- poj 2367 拓扑排序入门
Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when ...
随机推荐
- centos 7 DenyHosts 安装 防暴力破解ssh登陆
为了减少软件扫描ssh登陆 还是用这个比较好点 默认端口号22 也要改 登陆密码也不要使用 弱口令 123456 这样的 Description DenyHosts is a python prog ...
- 通过CSS实现的html背景色渐变
实现代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- vim关于 引号和 括号的 高效操作-很好很强大的!
http://blog.csdn.net/bigshady/article/details/6019963 对括号匹配, 进行跳转, 使用的是%. 匹配的括号, 都会被高亮显示, 但是: 根据光标的 ...
- linuxMint設置窗口最大最小化
linuxMint下面用键盘快速让窗口最大化和最小化
- 数字格式化函数:Highcharts.numberFormat()
(转)数字格式化函数:Highcharts.numberFormat() 一.函数说明 该函数用于图表中数值的格式化,常见用途有数值精度控制.小数点符.千位符显示控制等. 二.函数使用 1.函 ...
- jQuery.imgLazyLoad图片懒加载组件
一.前言 当一个页面中请求的图片过多,而且图片太大,页面访问的速度是非常慢的,对用户的体验非常不友好:使用图片懒加载,可以减轻服务器的压力,增加页面的访问量,这里主要是总结一下我自己写的图片懒加载组件 ...
- 淘宝首页源码藏美女彩蛋(上)(UED新作2013egg)
今日,偶尔翻看淘宝源码,发现竟有美女形状源码.如下图: 此段代码在console中运行,结果更为惊叹. 亲手尝试的读者已经看到了代码运行的结果.taobao.com的console打印出了UED的招聘 ...
- 迷你版Deferred
直接贴代码: /** * 迷你版的deferred */ function Deferred(func) { if (this instanceof Deferred === false) { ret ...
- python爬虫神器PyQuery的使用方法
你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些 ...
- jquery 使用textarea
问题: 若在textarea标签中键入一个回车时,将插入2个字符\n\r ,将在datagrid不能正确显示. \n: 回车符 \r: 换行符 解决方案: txt = txt.Replace(&qu ...