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 ...
随机推荐
- SecureCRT 迁移到新环境,导出配置文件目录 转
SecureCRT 打开SecureCRT,点击菜单栏的“选项”--“全局选项” 在打开的窗口中,选择“常规”,在右侧找到“配置文件夹”,这个就是SecureCRT的配置文件目录. 复制这个路径并且进 ...
- 解决asp.net 以及MVC中上传文件大小限制的问题
﹤system.web﹥ ﹤httpruntime requestlengthdiskthreshold="256" maxrequestlength="2097151& ...
- webapp开发学习---Cordova目录结构分析及一些概念
Config.xml是一个全局配置文件,用于控制cordova应用程序行为的许多方面. 这个不依赖于平台的XML文件是基于W3C的“打包Web应用程序(Widget)”规范进行安排的,并扩展到指定 ...
- AJPFX关于Collection 集合的表述
集合的遍历class Demo_Collection{ public static void main(String[] args){ Collection c = new ...
- QT入门学习
第一个QT程序 #include<QApplication> #include<QDialog> #include<QLabel> #include<QTex ...
- [翻译] API测试最佳实践 - 身份验证(Authentication)
API测试最佳实践 - 身份验证 适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了 ...
- .Net Mvc EasyUI DataGrid 分页
由于项目的需要,最近一直在学习 .net MVC 和EasyUI.上周写了一个<.Net Mvc 返回Json,动态生成EasyUI Tree>,今天再写一个EasyUI中另一个重要的组件 ...
- 临时笔记 Protection
如果操作系统不使用处理器的多任务机制,它仍然需要为栈创建至少一个TSS 当程序通过调用门改变特权级的时候,处理器执行下面的步骤切换栈,并且执行被调用的程序在新的特权级 1. 使用目标代码段的DPL从T ...
- C++ 多态、虚函数、虚析构函数
1.若某种语言只支持类但不支持多态,则只能称为基于对象,不能说是面向对象. 2.多态:向不同对象发送同一个消息,不同的对象会产生不同的行为,发送消息可以是调用函数等操作.函数重载.运算符重载都是多态. ...
- servlet 常用指令
一.设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); 二.设置请求的字符编码 request.setChar ...