当前位置:网站首页>POJ 1094 sorting it all out
POJ 1094 sorting it all out
2022-07-06 22:33:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
The question : Given a series of relationships ( Only capital letters exist ), Infer whether there is contradiction ,
Or unable to determine the relationship . Or be able to determine the only relationship
analysis : Using topological sorting . But you need to sort while entering the relationship
contradiction : Infer whether there is a ring
Determine the relationship : Can find the unique topological order
Not sure about the relationship : There is no ring , And after all the relationships are processed , The relationship is still uncertain
notes : Suppose there is a contradiction , Then there is no need to infer the next relationship
#include<stdio.h>
#include<string.h>
int n,m,vis[30],rd[30],flag[30],map[30][30],cnt;
char t[30];
int tpsort()
{
int i,j,k,num,mark=1;
cnt=0;
memset(vis,0,sizeof(vis)); // Mark whether to access
for(i=0;i<n;i++)
if(flag[i]){
num=0;
for(j=0;j<n;j++) // The calculated penetration is 0 The number of
if(flag[j]&&!rd[j]&&!vis[j])
num++;
if(num==0) // If there is no penetration, it is 0 node , Then there are rings
return 0;
if(num>1) // If the degree of penetration is 0 Node of is greater than 1. It indicates that a unique topological relationship cannot be established
mark=0;
for(j=0;j<n;j++){
if(flag[j]&&!rd[j]&&!vis[j]){
t[cnt++]=j+'A';
vis[j]=1;
break;
}
}
for(k=0;k<n;k++)
if(map[j][k])
rd[k]--;
}
if(!mark)
cnt=0;
return 1;
}
int main()
{
int i,j,mark,pos,r[30];
char s[5];
while(scanf("%d%d",&n,&m)!=EOF){
if(m==0&&n==0)
break;
mark=1;
memset(map,0,sizeof(map));
memset(flag,0,sizeof(flag)); // Mark whether the element exists
memset(r,0,sizeof(r));
for(i=1;i<=m;i++){
scanf("%s",s);
if(mark==1){
flag[s[0]-'A']=flag[s[2]-'A']=1;
if(s[1]=='>'){
map[s[2]-'A'][s[0]-'A']=1; // Record the relationship of edges
r[s[0]-'A']++; // Record the degree of penetration
}
else{
map[s[0]-'A'][s[2]-'A']=1;
r[s[2]-'A']++;
}
for(j=0;j<n;j++)
rd[j]=r[j]; // Auxiliary space . Prevent topology sorting from changing the degree of penetration in the process
mark=tpsort();
if(!mark)
pos=i;
if(mark&&cnt==n){ // When there is no ring and the relationship is certain
mark=2;
pos=i;
t[cnt]=0; // Empty characters at the end of the character array
}
}
}
if(mark==0)
printf("Inconsistency found after %d relations.\n",pos);
else if(mark==1)
printf("Sorted sequence cannot be determined.\n");
else if(mark==2)
printf("Sorted sequence determined after %d relations: %s.\n",pos,t);
}
return 0;
}Copyright notice : This article is the original article of the blogger . Blog , Do not reprint without permission .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/116980.html Link to the original text :https://javaforall.cn
边栏推荐
- How big is the empty structure?
- 【无标题】
- 如何用程序确认当前系统的存储模式?
- 视图(view)
- Leetcode question brushing (XI) -- sequential questions brushing 51 to 55
- 【编译原理】做了一半的LR(0)分析器
- Aardio - 利用customPlus库+plus构造一个多按钮组件
- Sizeof keyword
- 2014阿里巴巴web前实习生项目分析(1)
- NPDP certification | how do product managers communicate across functions / teams?
猜你喜欢

关于声子和热输运计算中BORN电荷和non-analytic修正的问题

Chapter 4: talk about class loader again

How to confirm the storage mode of the current system by program?

基于 QEMUv8 搭建 OP-TEE 开发环境

Aardio - construct a multi button component with customplus library +plus

Aardio - does not declare the method of directly passing float values

Unity3d minigame-unity-webgl-transform插件转换微信小游戏报错To use dlopen, you need to use Emscripten‘s...问题

C# 三种方式实现Socket数据接收

CCNA Cisco network EIGRP protocol

2022-07-04 mysql的高性能数据库引擎stonedb在centos7.9编译及运行
随机推荐
手写ABA遇到的坑
The ceiling of MySQL tutorial. Collect it and take your time
Jafka来源分析——Processor
labelimg的安装与使用
Attack and defense world ditf Misc
case 关键字后面的值有什么要求吗?
Report on technological progress and development prospects of solid oxide fuel cells in China (2022 Edition)
Installation and use of labelimg
UE4蓝图学习篇(四)--流程控制ForLoop和WhileLoop
Config:invalid signature solution and troubleshooting details
二分图判定
Comparison between variable and "zero value"
Pit encountered by handwritten ABA
Adavit -- dynamic network with adaptive selection of computing structure
LeetCode 练习——剑指 Offer 26. 树的子结构
Senior soft test (Information System Project Manager) high frequency test site: project quality management
UDP编程
That's why you can't understand recursion
How to use flexible arrays?
OpenCV VideoCapture. Get() parameter details