当前位置:网站首页>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
边栏推荐
- Comparison between variable and "zero value"
- 【踩坑合辑】Attempting to deserialize object on CUDA device+buff/cache占用过高+pad_sequence
- three.js绚烂的气泡效果
- MySQL----初识MySQL
- General implementation and encapsulation of go diversified timing tasks
- labelimg的安装与使用
- POJ 1258 Agri-Net
- NetXpert XG2帮您解决“布线安装与维护”难题
- HDR image reconstruction from a single exposure using deep CNN reading notes
- Adavit -- dynamic network with adaptive selection of computing structure
猜你喜欢

That's why you can't understand recursion

Attack and defense world ditf Misc

AdaViT——自适应选择计算结构的动态网络

NPDP认证|产品经理如何跨职能/跨团队沟通?

Self made j-flash burning tool -- QT calls jlinkarm DLL mode

pytorch_YOLOX剪枝【附代码】

Clip +json parsing converts the sound in the video into text

Crawler obtains real estate data
![[leetcode] 19. Delete the penultimate node of the linked list](/img/ab/25cb6d6538ad02d78f7d64b2a2df3f.png)
[leetcode] 19. Delete the penultimate node of the linked list

Mysql database basic operations DML
随机推荐
【无标题】
volatile关键字
金融人士必读书籍系列之六:权益投资(基于cfa考试内容大纲和框架)
Attack and defense world ditf Misc
Leetcode exercise - Sword finger offer 26 Substructure of tree
OpenNMS separation database
leetcode:面试题 17.24. 子矩阵最大累加和(待研究)
How to use flexible arrays?
qt quick项目offscreen模式下崩溃的问题处理
LeetCode 练习——剑指 Offer 26. 树的子结构
Aardio - Method of batch processing attributes and callback functions when encapsulating Libraries
柔性数组到底如何使用呢?
config:invalid signature 解决办法和问题排查详解
pytorch_ Yolox pruning [with code]
i. Mx6ull build boa server details and some of the problems encountered
MySQL数据库基本操作-DML
OpenCV VideoCapture. Get() parameter details
变量与“零值”的比较
Spatial domain and frequency domain image compression of images
[IELTS speaking] Anna's oral learning record part1