POJ1094 / ZOJ1060
#include <cstdio>
#include <cstring>
#include <stack>
#include <iostream>
using namespace std;
#define N 1005 int first[N] , in[N] , rec[N] , vis[N] , k;
char str[N][]; struct Node
{
int y , next;
}node[N<<]; void add_edge(int x,int y)
{
in[y]++;
node[k].y = y , node[k].next = first[x];
first[x] = k++;
} int dag(int cnt , int n)
{
int copy_in[N];
for(int i = ; i<n ; i++) copy_in[i] = in[i];
int t = ;
stack<int> s;
for(int i = ; i<n ; i++){
if(!copy_in[i] && vis[i])
{
// cout<<"there: "<<i<<" "<<cnt<<" "<<n<<endl;
t++;
s.push(i);
}
} int flag = ;
for(int i = ; i<cnt ; i++){
if(s.empty()){
return -;
}
if(s.size() > ) flag = ;
int u = s.top();
s.pop();
rec[i] = u;
for(int i=first[u] ; i!=- ; i=node[i].next){
int v = node[i].y;
copy_in[v]--;
if(!copy_in[v]) s.push(v);
}
}
if(cnt == n && t == && flag) return ;
else return ;
} int main()
{
// freopen("a.in" , "rb" , stdin);
int n,m,a,b;
while(~scanf("%d%d",&n,&m)){
if(n== && m==) break;
memset(first , - , sizeof(first));
memset(in , , sizeof(in));
memset(vis , , sizeof(vis)); for(int i = ; i<m ; i++){
scanf("%s",str[i]);
} int cnt = ;//计算当前传入的所有边中含有的点数
k=;
for(int i= ; i<m ; i++){
//add edge
a = str[i][] - 'A';
if(!vis[a]){
cnt++;
vis[a]=;
}
b = str[i][] - 'A';
if(!vis[b]){
cnt++;
vis[b]=;
}
// cout<<"here: "<<a<< " "<<b<<endl;
add_edge(a,b); int falg = dag(cnt , n);
if(falg == -)
{
printf("Inconsistency found after %d relations.\n" , i+);
break;
} else if(falg == )
{
printf("Sorted sequence determined after %d relations: " , i+);
for(int i=;i<n;i++)
{
char c = 'A'+rec[i];
cout<<c;
}
printf(".\n");
break;
} else{
if(i<m-) continue;
printf("Sorted sequence cannot be determined.\n");
}
}
}
return ;
}
这道题就是逐步判断是否找到合适的顺序,找到了就停止将顺序输出
这里最大的问题是,在有向图中我们进行DAG查询的过程中,每一步都得保证只有一个点没有入度,否则多点没有入度,分不清先后顺序
POJ1094 / ZOJ1060的更多相关文章
- ACM/ICPC 之 拓扑排序范例(POJ1094-POJ2585)
两道拓扑排序问题的范例,用拓扑排序解决的实质是一个单向关系问题 POJ1094(ZOJ1060)-Sortng It All Out 题意简单,但需要考虑的地方很多,因此很容易将code写繁琐了,会给 ...
- POJ1094[有向环 拓扑排序]
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33184 Accepted: 11 ...
- nyoj349 poj1094 Sorting It All Out(拓扑排序)
nyoj349 http://acm.nyist.net/JudgeOnline/problem.php?pid=349poj1094 http://poj.org/problem?id=10 ...
- POJ1094 拓扑排序
问题:POJ1094 本题考查拓扑排序算法 拓扑排序: 1)找到入度为0的点,加入已排序列表末尾: 2)删除该点,更新入度数组. 循环1)2)直到 1. 所有点都被删除,则找到一个拓扑 ...
- [poj1094]Sorting It All Out_拓扑排序
Sorting It All Out poj-1094 题目大意:给出一些字符串之间的大小关系,问能否得到一个唯一的字符串序列,满足权值随下标递增. 注释:最多26个字母,均为大写. 想法:显然,很容 ...
- POJ- 1094 Sorting It All Out---拓扑排序是否唯一的判断
题目链接: https://vjudge.net/problem/POJ-1094 题目大意: 该题题意明确,就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列.是典型的拓扑排序,但输出格式上 ...
- POJ1094——拓扑排序和它的唯一性
比较模板的topological-sort题,关键在于每个元素都严格存在唯一的大小关系,而一般的拓扑排序只给出一个可能解,这就需要每趟排序的过程中监视它是不是总坚持一条唯一的路径. 算法导论里面的拓扑 ...
- poj1094 拓扑 Sorting It All Out
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29744 Accepted: 10 ...
- poj1094
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29539 Accepted: 10 ...
随机推荐
- Linux磁盘分区、格式化和挂载
一.查看磁盘使用 [root@iZ88rvassw1Z ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G .3G 3 ...
- C# 操作Access的Ole对象[转]
原文链接 OLE对象数据类型 (1)OLE 对象用于使用 OLE 协议在其他程序中创建的 OLE 对象,如 Microsoft Word 文档. Microsoft Excel 电子表格.图片.声音或 ...
- 415 Add Strings 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和.注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和 ...
- webform 基础一
WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件.让开发者认为自己是在操作一个windows界面.极大地提高了开发效率.区别于dreamweaver,可以用代码写,也可以把控件像w ...
- CSS——BFC
http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html 元素若不是bfc,那么内部浮动元素的高度不参与计算 元素若不是bf ...
- arcpy利用XY创建点
# -*- coding: utf-8 -*-"""Created on Sun Apr 7 15:32:24 2019@author: ""&quo ...
- ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)
消息结构说明nav_msgs/Path.msg结构#An array of poses that represents a Path for a robot to followHeader heade ...
- json 存 window.localStorage.setItem('hideColums',hideArr);
onColumnSwitch:function(row, $element){ //JSON.parse() var showColumns=$('#table').bootstrapTable('g ...
- 初始化react项目
react脚手架 npm install -g create-react-app 国内npm一般下载比较慢或者是常出现下载失败的情况,我们可以指定下载的仓库: npm install -g creat ...
- ansible基础配置
1.基础配置 1.1.环境 主机配置 ansible版本:2.7.4 控制端:centos7.4,IP:192.168.1.213,主机名:operation 被控制端: centos6.5,IP:1 ...