青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj1094

Sorting It All Out

Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 19054 Accepted: 6511

Description

An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in this problem, we will give you a set of relations of the form A < B and ask you to determine whether a sorted order has been specified or not.

Input

Input consists of multiple problem instances. Each instance starts with a line containing two positive integers n and m. the first value indicated the number of objects to sort, where 2 <= n <= 26. The objects to be sorted will be the first n characters of the uppercase alphabet. The second value m indicates the number of relations of the form A < B which will be given in this problem instance. Next will be m lines, each containing one such relation consisting of three characters: an uppercase letter, the character "<" and a second uppercase letter. No letter will be outside the range of the first n letters of the alphabet. Values of n = m = 0 indicate end of input.

Output

For each problem instance, output consists of one line. This line should be one of the following three:

Sorted sequence determined after xxx relations: yyy...y.
Sorted sequence cannot be determined.
Inconsistency found after xxx relations.

where xxx is the number of relations processed at the time either a sorted sequence is determined or an inconsistency is found, whichever comes first, and yyy...y is the sorted, ascending sequence.

Sample Input

4 6
A<B
A<C
B<C
C<D
B<D
A<B
3 2
A<B
B<A
26 1
A<Z
0 0

Sample Output

Sorted sequence determined after 4 relations: ABCD.
Inconsistency found after 2 relations.
Sorted sequence cannot be determined.
 
我被我自己惡心倒了,這題思路很簡單
就是topsort,但要判斷環
判斷環可以用拓撲排序判斷,如果topsort不能遍歷所有的點就說明存在環
也可以用dfs判斷,如果在dfs過程中遍歷到已經遍歷的節點,那肯定存在環
這里給出個簡單的dfs
 1int dfs(int u)
 2{
 3    int ii;
 4    if (x==u) return 1;
 5    for (ii=1; ii<=num[u] ; ii++ )
 6    {
 7        if (dfs(map[u][ii])==1)
 8            return 1;
 9    }

10    return 0;
11}
//x是遍歷的初始節點,這個dfs可以繼續優化

我剛開始想可以topsort之后再判斷環,但是我就被自己惡心到了
我寫的topsort中如果出現不能確定的情況就退出
那么這樣就不知道有沒有環了,
我還用了一個巨惡心的標志flag
這個flag讓我wa了無數次,題目我也不太明白剛開始
我誤以為如果前面幾條能判斷出那三種情況之一的話就不用管后面的了,其實不然,如果目前不確定的話,那還應該繼續判斷下去
直到出現了矛盾(環)或者能確定出唯一的topsort的情況
還有我在查環的時候把dfs過程放在了topsort里面,其實本意是只要查一邊就行了
但是我在寫的時候每個點都dfs一遍,這樣時間就爆了,
不得已,改在init里面了
這道題終于艱難的A掉了
  1#include<stdio.h>
  2#include<string.h>
  3#include<math.h>
  4#define MAX 30
  5int degree[MAX],degree1[MAX];
  6int map[MAX][MAX];
  7int num[MAX],stack[MAX],top;
  8int n,m,len,flag,ans;
  9int seq[27],fff;
 10int used,x,y;
 11short ff[27];
 12void push(int i)
 13{
 14    top++;
 15    stack[top]=i;
 16}

 17int pop()
 18{
 19    top--;
 20    return stack[top+1];
 21}

 22int dfs(int u)
 23{
 24    int ii;
 25    if (x==u) return 1;
 26    for (ii=1; ii<=num[u] ; ii++ )
 27    {
 28        if (dfs(map[u][ii])==1)
 29            return 1;
 30    }

 31    return 0;
 32}

 33void topsort()
 34{
 35    int i,j,now;
 36    len=0;
 37    top=0;
 38    for (i=1; i<=n ; i++ )
 39        if(ff[i]==1&&degree[i]==0)
 40            push(i);
 41    if (top>1&&used==n)
 42    {
 43        flag=-1;
 44        return;
 45    }

 46    while (top)
 47    {
 48        now=pop();
 49        len++;
 50        seq[len]=now;
 51        for (i=1; i<=num[now] ; i++ )
 52        {
 53            degree[map[now][i]]--;
 54            if (degree[map[now][i]]==0)
 55            {
 56                push(map[now][i]);
 57            }

 58            if (top>1&&used==n)
 59            {
 60                flag=-1;
 61                return;
 62            }

 63        }

 64    }

 65    if (len<used)
 66    {
 67        flag=1;
 68        return;
 69    }

 70    if (len==n)
 71    {
 72        flag=2;
 73        return;
 74    }

 75}

 76void print()
 77{
 78    int i;
 79    if (flag==1)
 80    {
 81        printf("Inconsistency found after %d relations.\n",ans);
 82        return;
 83    }

 84    if (flag==-1)
 85    {
 86        printf("Sorted sequence cannot be determined.\n");
 87        return;
 88    }

 89    if (flag==2)
 90    {
 91        printf("Sorted sequence determined after %d relations: ",ans);
 92        for (i=1; i<=n ; i++ )
 93        {
 94            printf("%c",seq[i]+64);
 95        }

 96        printf(".\n");
 97        return;
 98    }

 99}

100void init()
101{
102    char tmp[3];
103    int i,j,a,b;
104    memset(ff,0,sizeof(ff));
105    memset(degree1,0,sizeof(degree1));
106    memset(num,0,sizeof(num));
107    memset(map,0,sizeof(map));
108    flag=0;
109    used=0;
110    for (i=1; i<=m ; i++ )
111    {
112        scanf("%s",&tmp);
113        a=tmp[0]-64;
114        if (!ff[a])
115        {
116            used++;
117            ff[a]=1;
118        }

119        b=tmp[2]-64;
120        if (!ff[b])
121        {
122            used++;
123            ff[b]=1;
124        }

125        x=a;
126        if ((flag==0||flag==-1)&&(dfs(b)==1))
127        {
128            flag=1;
129            ans=i;
130        }

131        if (flag==0||flag==-1)
132        {
133            degree1[b]++;
134            num[a]++;
135            map[a][num[a]]=b;
136            for (j=1; j<=n ; j++ )
137            {
138                degree[j]=degree1[j];
139            }

140            topsort();
141            ans=i;
142        }

143    }

144    if (flag==0&&used<n)
145    {
146        flag=-1;
147        return;
148    }

149}

150int main()
151{
152    scanf("%d%d",&n,&m);
153    while (!(n==0&&m==0))
154    {
155        init();
156        print();
157        scanf("%d%d",&n,&m);
158    }

159    return 0;
160}

161

posted on 2012-02-16 12:25 jh818012 閱讀(143) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿

文章檔案(85)

搜索

最新評論

  • 1.?re: poj1426
  • 我嚓,,輝哥,,居然搜到你的題解了
  • --season
  • 2.?re: poj3083
  • @王私江
    (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
  • --游客
  • 3.?re: poj3414[未登錄]
  • @王私江
    0ms
  • --jh818012
  • 4.?re: poj3414
  • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
  • --王私江
  • 5.?re: poj1426
  • 評論內容較長,點擊標題查看
  • --王私江
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩小视频在线观看| 国产亚洲精品自拍| 亚洲国产精品va在看黑人| 欧美一区二区在线免费播放| 久久精品论坛| 黄色成人av网| 美女91精品| 影音先锋欧美精品| 一本大道久久a久久综合婷婷| 国产主播精品| 久久女同互慰一区二区三区| 亚洲国产另类久久久精品极度| 欧美美女bb生活片| 欧美专区在线观看| 亚洲乱码国产乱码精品精| 欧美影院成年免费版| 亚洲激情电影在线| 国产精品一级在线| 欧美大学生性色视频| 亚洲无限av看| 亚洲韩国青草视频| 亚洲一区中文字幕在线观看| 韩国亚洲精品| 国产精品视频yy9299一区| 欧美成年人在线观看| 亚洲欧美日韩一区二区在线| 亚洲国产小视频| 久久久久久久久久久久久久一区 | 久久精品72免费观看| 91久久久一线二线三线品牌| 久久精品国产亚洲aⅴ| 一本一本久久| 91久久中文| 国产亚洲精品久久飘花| 欧美日韩性生活视频| 免费观看成人| 久久精品麻豆| 亚洲与欧洲av电影| 99国产精品久久久久老师| 欧美大片国产精品| 久久先锋影音| 久久精品视频在线看| 亚洲欧美在线x视频| 亚洲精品一区二区三区婷婷月| 国产真实乱子伦精品视频| 国产女人精品视频| 国产精品高潮呻吟久久| 欧美日韩国产在线播放网站| 免费成人黄色片| 麻豆精品视频在线| 久久亚洲视频| 久久综合中文字幕| 午夜精品一区二区三区电影天堂| 99视频精品在线| 亚洲毛片在线观看| 亚洲精品国产精品乱码不99| 91久久精品一区二区三区| 欧美韩日亚洲| 欧美高清视频一区| 国产日韩欧美夫妻视频在线观看| 亚洲第一中文字幕| 麻豆久久婷婷| 久久激情视频免费观看| 欧美一区二区成人6969| 午夜国产欧美理论在线播放 | 欧美三级日本三级少妇99| 在线日韩精品视频| 欧美一级黄色网| 午夜精品久久久久影视 | 美女亚洲精品| 毛片一区二区三区| 国产精品麻豆欧美日韩ww | 美女久久一区| 欧美电影美腿模特1979在线看| 欧美成人四级电影| 欧美日韩国产限制| 国产精品xxxav免费视频| 国产精品视频精品| 国语自产在线不卡| 91久久精品美女高潮| 亚洲麻豆视频| 亚洲图片欧洲图片日韩av| 午夜精品www| 久久久九九九九| 欧美成年人网站| 最近看过的日韩成人| 一本到高清视频免费精品| 亚洲图片欧美午夜| 久久动漫亚洲| 猛干欧美女孩| 欧美日韩麻豆| 国产日本欧美一区二区三区在线| 激情成人av在线| 日韩午夜视频在线观看| 亚洲综合视频在线| 久久婷婷国产综合精品青草| 亚洲国内自拍| 亚洲欧美日韩一区二区三区在线| 久久久久一区| 欧美日韩成人综合天天影院| 国产精品资源在线观看| 黄色成人免费网站| 夜夜嗨av一区二区三区免费区| 亚洲欧美激情一区二区| 久久综合影音| 亚洲视频精品| 免费永久网站黄欧美| 国产精品羞羞答答| 亚洲欧洲精品一区二区三区不卡 | 欧美日韩精品免费看| 国产欧美日韩专区发布| 亚洲黄色天堂| 午夜一区在线| 久久香蕉国产线看观看av| 亚洲精品护士| 久久精品国产欧美激情| 欧美成人一区二区| 国产日韩欧美三级| 一本久道久久综合狠狠爱| 久久久噜噜噜久久人人看| 国产伦精品一区二区三区高清| 在线一区二区三区做爰视频网站| 亚洲先锋成人| 亚洲美女在线国产| 一本色道久久综合一区| 久久精品国产精品| 欧美日韩一区二区国产| 一区在线影院| 在线视频欧美日韩精品| 浪潮色综合久久天堂| 一本久久青青| 麻豆av福利av久久av| 亚洲人成在线影院| 亚洲高清在线播放| 日韩一级大片| 欧美高清视频一区| 一区二区三区偷拍| 一本大道久久a久久综合婷婷| 久久er精品视频| 欧美四级电影网站| 91久久在线视频| 久久综合999| 亚洲伊人第一页| 欧美日韩亚洲不卡| 黄色一区二区三区四区| 一区二区三区四区在线| 免费观看亚洲视频大全| 国内精品美女在线观看| 午夜精品免费| 亚洲精品一二| 欧美大片专区| 亚洲国语精品自产拍在线观看| 久久蜜臀精品av| 欧美伊久线香蕉线新在线| 国产精品久久久久久模特 | 午夜视频在线观看一区二区| 亚洲精品视频一区二区三区| 欧美激情国产日韩| 亚洲国产精品美女| 久久久精彩视频| 欧美一区二区三区视频免费| 国产精品成人久久久久| 亚洲女人小视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美激情无毛| 亚洲片在线观看| 亚洲春色另类小说| 免费在线国产精品| 亚洲视频精品| 欧美在线视频网站| 国产一区二区主播在线| 久久亚洲国产精品一区二区| 亚洲国产另类久久精品| 久久影视精品| 亚洲国产精品一区制服丝袜| 欧美福利视频| 欧美国产视频一区二区| 亚洲国产乱码最新视频| 亚洲高清视频一区| 欧美精品久久久久久久免费观看| 99精品久久| 一本色道久久综合狠狠躁的推荐| 国产精品vvv| 久久成人av少妇免费| 久久精品成人一区二区三区| 在线观看视频免费一区二区三区| 欧美高清自拍一区| 欧美人与性动交a欧美精品| 亚洲一区二区高清视频| 亚洲一区久久久| 狠狠色综合色综合网络| 免费欧美视频| 欧美日韩p片| 欧美主播一区二区三区| 久久亚洲不卡| 亚洲视频在线一区| 香蕉视频成人在线观看| 亚洲国产成人精品女人久久久| 亚洲激情在线播放| 亚洲成人资源网|