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

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>
            欧美黑人多人双交| 久久免费午夜影院| 亚洲日本精品国产第一区| 午夜久久影院| 亚洲精品无人区| 玖玖精品视频| 国内精品视频在线播放| 性欧美长视频| 亚洲一区二区三区免费视频| 欧美精品尤物在线| 亚洲精品美女91| 欧美激情一区二区三区在线| 久久久久国产精品麻豆ai换脸| 国产精品揄拍一区二区| 亚洲欧美日韩一区二区三区在线观看| 亚洲国产精品一区| 久久久久久一区| 精品成人久久| 欧美成人精品影院| 亚洲成人在线视频播放| 亚洲精品国精品久久99热| 欧美成人精品在线视频| 亚洲日本电影| 亚洲精品一区二区三| 欧美日韩国产美女| 亚洲一区二区高清视频| 亚洲男人的天堂在线观看| 国产日韩欧美综合一区| 欧美一区二区三区免费视频| 亚洲欧洲av一区二区| 国产一区二区三区日韩| 麻豆精品一区二区av白丝在线| 老色批av在线精品| 亚洲精品视频中文字幕| 一本色道久久综合亚洲精品小说| 国产精品久久久久久av下载红粉 | 亚洲精品国久久99热| 欧美精品一区二| 亚洲欧美日韩区| 久久精品国产清自在天天线| 亚洲茄子视频| 亚洲制服少妇| 亚洲国产99精品国自产| 日韩天堂在线视频| 国产午夜精品福利| 亚洲激情视频在线播放| 国产精品永久免费观看| 蜜臀a∨国产成人精品| 欧美日韩视频免费播放| 久久精视频免费在线久久完整在线看 | 免费观看30秒视频久久| 亚洲精品午夜| 亚洲在线网站| 91久久久久久国产精品| 99国产精品久久久| 国语对白精品一区二区| 亚洲精品美女久久7777777| 国产精品资源| 亚洲欧洲精品一区二区三区波多野1战4| 欧美手机在线视频| 欧美成人情趣视频| 国产精品亚洲一区二区三区在线| 欧美成人综合| 国产日韩欧美一区在线 | 欧美激情亚洲视频| 久久成人精品| 欧美日本在线看| 裸体素人女欧美日韩| 国产精品久久久久久久一区探花| 欧美高潮视频| 国内外成人免费激情在线视频网站| 日韩一级精品视频在线观看| 原创国产精品91| 性18欧美另类| 销魂美女一区二区三区视频在线| 欧美精品激情blacked18| 免费观看成人鲁鲁鲁鲁鲁视频| 国产伦精品一区二区三区在线观看| 亚洲精品美女久久久久| 亚洲激情视频网| 久久资源av| 另类专区欧美制服同性| 国产午夜精品一区理论片飘花| 一区二区三区日韩精品视频| 一本久久青青| 欧美日韩不卡| 99re在线精品| 一区二区三区欧美日韩| 欧美国产日韩视频| 亚洲国产欧美在线| 亚洲精品一区在线观看香蕉| 免费久久99精品国产| 欧美激情精品久久久久久| 亚洲电影免费观看高清完整版在线观看 | 猛男gaygay欧美视频| 久久久久久91香蕉国产| 国产日韩欧美91| 欧美一级夜夜爽| 久久久九九九九| 精品91免费| 久久最新视频| 亚洲黄色在线看| 亚洲天堂成人| 国产精品网站在线观看| 午夜精品免费在线| 久久精品最新地址| 亚洲精品视频在线看| 亚洲国产欧美日韩另类综合| 欧美va天堂在线| 亚洲人成在线观看一区二区| 一本大道久久a久久精品综合| 欧美日韩成人在线播放| 中文欧美在线视频| 久久久精品tv| 亚洲精品一级| 欧美午夜精品久久久| 亚洲欧美色婷婷| 美日韩精品视频| 99精品国产在热久久下载| 国产精品v一区二区三区| 先锋资源久久| 亚洲电影下载| 亚洲欧美网站| 亚洲福利精品| 国产精品夫妻自拍| 久久久av毛片精品| 亚洲欧洲一区| 久久久久久综合| av成人老司机| 国产一区二区三区在线观看视频 | 欧美大片专区| 亚洲香蕉网站| 亚洲第一黄网| 久久爱www久久做| 亚洲欧洲一区二区三区在线观看| 国产精品久久国产愉拍 | 欧美va天堂在线| 午夜老司机精品| 亚洲三级免费电影| 久久婷婷国产综合尤物精品| 一区二区三区偷拍| 亚洲第一精品在线| 国产日产欧产精品推荐色| 欧美激情亚洲激情| 久久男女视频| 亚洲女人小视频在线观看| 亚洲国产婷婷综合在线精品| 久久久久久久综合日本| 亚洲午夜高清视频| 亚洲日本视频| 在线观看不卡av| 国产一区二区黄| 国产精品久久久久7777婷婷| 欧美黑人在线观看| 久久视频在线看| 欧美一站二站| 亚洲自拍偷拍福利| 日韩一级裸体免费视频| 亚洲黄色免费| 欧美成人免费在线观看| 久久噜噜噜精品国产亚洲综合| 亚洲欧美国产77777| 99国产精品久久久久久久久久| 亚洲电影免费在线| 激情欧美一区二区三区| 国产婷婷成人久久av免费高清 | 欧美福利视频网站| 玖玖玖国产精品| 久久久久国内| 久久精品30| 久久精品免费播放| 玖玖综合伊人| 亚洲另类自拍| 亚洲国产欧美一区| 国模精品一区二区三区| 国产九区一区在线| 国产精品天天摸av网| 国产精品女主播| 国产精品女人网站| 国产精品一区二区黑丝| 国产精品女同互慰在线看| 国产精品久久久久久久久久尿| 欧美视频导航| 国产精品久久久久国产a级| 国产精品xvideos88| 国产精品福利av| 国产精品麻豆欧美日韩ww| 国产精品网站一区| 国产一区二区三区四区在线观看| 国产在线不卡视频| 亚洲电影免费观看高清完整版在线 | 欧美亚洲尤物久久| 欧美在线不卡| 久久综合国产精品| 欧美大胆人体视频| 欧美日韩一区二区视频在线观看| 国产精品高潮久久| 国内外成人免费激情在线视频| 亚洲二区视频在线| 夜夜爽99久久国产综合精品女不卡|