poj1094Sorting It All Out
来源:互联网 发布:淘宝特卖优惠券 入口 编辑:程序博客网 时间:2024/05/17 11:35
刚遇到这道题时我就想着把它建立成一个图,然后每输入一条边就就深度遍历一下。
判断是否有环和是否能判断出大小顺序。。。
但是之后才知道一般递归都很耗时间。。。
尽管我加入了几个强大的剪枝。而且在discuss里面的数据都通过了。
不过还是超时。。。。
我特别注明一下,下面的代码是超时的代码额!!
希望大神能帮我修改一下ac。。小弟感激不尽!!!
#include<stdio.h>#include<string.h>#include<stdlib.h>int map[30][30];int chvist[30],order[30],isnothead[30],rudu[30];int n,m,vist[30],num;int DFS(int j,int layer,int xx[]){//vist[j] = 1;xx[layer] = j;if(layer == n-1){for(int j=0;j<n;j++)order[j] = xx[j];return 1;}for(int i=0;i<n;i++)if(map[j][i]){if(!vist[i]){vist[i] = 1;int ab = DFS(i,layer+1,xx);vist[i] = 0;if(ab != 0)return ab;}elsereturn -1;}return 0;}int main(){char ch[5];int xx[30];while(scanf("%d%d",&n,&m) && n && m){int isnotco = 1;int ring_or_order,times;memset(map,0,sizeof(map));memset(chvist,0,sizeof(chvist));memset(isnothead,0,sizeof(isnothead));memset(rudu,0,sizeof(rudu));for(int i=0;i<m;i++){scanf("%s",ch);chvist[ch[0]-'A'] = 1;chvist[ch[2]-'A'] = 1;rudu[ch[2]-'A']++;if(ch[1] == '<'){map[ch[0]-'A'][ch[2]-'A'] = 1;isnothead[ch[0]-'A'] = 1;isnothead[ch[2]-'A'] = 0;}else{map[ch[1]-'A'][ch[0]-'A'] = 1;isnothead[ch[0]-'A'] = 0;isnothead[ch[2]-'A'] = 1;}int rudunum = 0;for(int tt=0;tt<n;tt++)if(rudu[tt]==0)rudunum++;for(int j=0;j<n;j++)if(chvist[j] && isnotco && isnothead[j]==1 && rudunum==1){num = 0;memset(vist,0,sizeof(vist));vist[j] = 1; int flag = DFS(j,0,xx); if(flag == -1) { isnotco = 0; ring_or_order = 1; times = i+1; } else if(flag == 1) { isnotco = 0; ring_or_order = 2; times = i+1; }}}if(isnotco)printf("Sorted sequence cannot be determined.\n");else{if(ring_or_order==1)printf("Inconsistency found after %d relations.\n",times);else{printf("Sorted sequence determined after %d relations: ",times);for(int s=0;s<n;s++)printf("%c",order[s]+'A');printf(".\n");}}}return 0;}
下面是用拓扑排序0ms ac的链接。。前辈的
点击打开链接
- poj1094Sorting It All Out
- poj1094Sorting It All Out
- poj1094Sorting It All Out
- POJ1094Sorting It All Out 拓扑排序
- poj1094Sorting It All Out(拓扑排序)
- poj1094Sorting It All Out(拓扑排序)
- poj1094Sorting It All Out(拓朴排序)
- poj1094Sorting It All Out(拓朴排序)
- poj1094Sorting It All Out 最短路前基础拓扑排序
- Sorting It All Out
- Sorting It All Out
- Sorting It All Out
- Sorting It All Out
- Sorting It All Out
- Sorting It All Out
- Sorting It All Out
- Sorting It All Out
- NYOJ349_Sorting It All Out
- DOJO Study Note(4) - Dojo 中的拖拽
- Xen/KVM中解决鼠标移动问题 <VNC>
- Win32 Series - The Union of DIBs and DDBs
- C#,WebRequest类、HttpWebRequest类与HttpRequest类的区别
- JUnit三分钟教程 ---- 快速起步
- poj1094Sorting It All Out
- kendo,grid使用parameterMap传参,springmvc的Controller接受不到值
- 多线程-生产者消费者
- DOJO Study Note(5) - Dojo 的 UI 组件库 - Dijit
- redhat9 linux 网卡无法激活排障
- HDU 4293 Groups
- Ubuntu apt命令参数详解
- STRUCT+SPRING+HIBERNATE
- Websphere Commerce Suite 架构开发一个模块的流程