POJ 1094 Sorting It All Out 拓扑排序 难度:0
http://poj.org/problem?id=1094
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
int in[27],out[27];
char index[27];
bool vis[27];
int mem[27][27];
int n,m;
int tlen;
bool floyd(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(mem[i][k]&&mem[k][j])mem[i][j]=1;
}
}
}
for(int i=1;i<n;i++){
if(mem[i][i])return false;
}
return true;
}
bool calc(){
memset(in,0,sizeof(in));
memset(out,0,sizeof(out));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(mem[i][j]==1){
out[i]++;
in[j]++;
}}
}
for(int i=0;i<n;i++){
if(in[i]+out[i]!=n-1)return false;
}
return true;
}
bool topologicalsort(){
memset(vis,0,sizeof(vis));
int len=0;
bool fl=false;
while(len<n){
fl=false;
for(int i=0;i<n;i++){
if(in[i]==0&&!vis[i]){
fl=true;
vis[i]=true;
index[len]=i+'A';
len++;
for(int j=0;j<n;j++){
if(mem[i][j])in[j]--;
}
break;
}
}
if(!fl)return false;
}
return true;
}
int main(){
char ch,ch2;
while (scanf("%d %d",&n,&m)==2&&n){
bool fl=false;
getchar();
memset(mem,0,sizeof(mem));
memset(index,0,sizeof(index));
for(int i=1;i<=m;i++){
scanf(" %c< %c",&ch,&ch2);
in[ch2-'A']++;
out[ch-'A']++;
mem[ch-'A'][ch2-'A']=1;
getchar();
if(fl)continue;
if(floyd()){
if(calc()){
if(topologicalsort()){
fl=true;
index[n]=0;
printf("Sorted sequence determined after %d relations: %s.\n",i,index);
continue;
}
}
}
else {
printf("Inconsistency found after %d relations.\n",i);
fl=true;
continue;
}
}
if(!fl)printf("Sorted sequence cannot be determined.\n");
}
return 0;
}
POJ 1094 Sorting It All Out 拓扑排序 难度:0的更多相关文章
- ACM: poj 1094 Sorting It All Out - 拓扑排序
poj 1094 Sorting It All Out Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%lld & ...
- poj 1094 Sorting It All Out (拓扑排序)
http://poj.org/problem?id=1094 Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)
Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...
- POJ 1094 Sorting It All Out (拓扑排序) - from lanshui_Yang
Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...
- poj 1094 Sorting It All Out_拓扑排序
题意:是否唯一确定顺序,根据情况输出 #include <iostream> #include<cstdio> #include<cstring> #include ...
- PKU 1094 Sorting It All Out(拓扑排序)
题目大意:就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列. 是典型的拓扑排序,但输出格式上确有三种形式: 1.该字母序列有序,并依次输出: 2.判断该序列是否唯一: 3.该序列字母次序之间 ...
- POJ 1094 Sorting It All Out(拓扑排序+判环+拓扑路径唯一性确定)
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 39602 Accepted: 13 ...
- [ACM] POJ 1094 Sorting It All Out (拓扑排序)
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26801 Accepted: 92 ...
- POJ 1094:Sorting It All Out拓扑排序之我在这里挖了一个大大的坑
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29984 Accepted: 10 ...
随机推荐
- Roll A Ball
GameObject的添加就不细说了,地面,小球和碰撞小物体. 刚体组件(Rigidbody): 使物体能够模拟物理效果,比如重力,碰撞,推力等: 控制小球移动的脚本(Script,Ball的脚本): ...
- RobotFrameWork WebService Soap接口测试 (一)
在做完基于http协议的接口测试之后,开始弄soap协议了,之前有过开发java webservice自动化框架的经验,所以我想着应该并不会很难.对于webservice的简介,服务器端和客户端的开发 ...
- 关于IP地址的一个细节问题
使用ip2long()和long2ip()函数把IP地址转成整型存放进数据库而非字符型.这几乎能降低1/4的存储空间.同时可以很容易对地址进行排序和快速查找;
- python核心编程学习记录之文件和输入输出
- Dynamics AX 2012 R2 创建一个专用的批处理服务器
安装额外AOS的另一原因,是要创建一个专用的Batch服务器. AOS实例在处理batch job时,会影响它的响应速度.安装一个专用Batch服务器,可以解决这个问题. 批处理服务器不能加到 ...
- 2016年上半年金融类App成绩单,手机银行优势尽显! (转自Analysys易观(ID:enfodesk))
2016已悄然时过大半,金融各领域经过了开年大战,二季度末尾的6月更是几家欢喜几家愁,其中频繁出现的黑马更是足够让人惊喜.我们基于易观千帆6月移动应用大数据,筛选了百款金融类App为您揭晓TOP100 ...
- orcale删除重复数据
1.删除orcale重复数据, delete from da_door awhere (a.dt,a.key1) in (select dt,key1 from da_door group by dt ...
- 【web必知必会】——图解HTTP(上)
本篇总结关于http的相关知识,主要内容参考如下导图: 主要讲解的内容有: 1 URL与URI的区别. 2 请求报文与相应报文的内容. 3 GET与POST的区别. 4 http的cookie.持久化 ...
- winform开发框架之模块维护
前言:模块维护试图解决的问题, 模块加载只用MEF的方式: MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库 ...
- signtool
https://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx C:\Users\Administrator\.nuget\packa ...