zoukankan      html  css  js  c++  java
  • P1347 排序

    P1347 排序
    floyed判环,水过。

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<queue>
      4 #include<algorithm>
      5 #include<cmath>
      6 #include<ctime>
      7 #include<cstring>
      8 #define inf 2147483647
      9 #define For(i,a,b) for(register int i=a;i<=b;i++)
     10 #define p(a) putchar(a)
     11 #define g() getchar()
     12 //by war
     13 //2017.10.25
     14 using namespace std;
     15 int n,m,x;
     16 char a[4];
     17 bool f[1000][1000];
     18 char ans[1000];
     19 void in(int &x)
     20 {
     21     int y=1;
     22     char c=g();x=0;
     23     while(c<'0'||c>'9')
     24     {
     25     if(c=='-')
     26     y=-1;
     27     c=g();
     28     }
     29     while(c<='9'&&c>='0')x=x*10+c-'0',c=g();
     30     x*=y;
     31 }
     32 void o(int x)
     33 {
     34     if(x<0)
     35     {
     36         p('-');
     37         x=-x;
     38     }
     39     if(x>9)o(x/10);
     40     p(x%10+'0');
     41 }
     42 
     43 int floyed()
     44 {
     45     int sum=0;
     46     For(k,'A','A'+n-1)
     47       For(i,'A','A'+n-1)
     48         For(j,'A','A'+n-1)
     49           if(f[i][k]&&f[k][j])
     50             f[i][j]=true;
     51     For(i,'A',n+'A'-1)
     52     if(f[i][i])
     53     return 0;
     54     bool flag=false;
     55     For(k,1,n)
     56     {
     57         sum=0;
     58         flag=false;
     59         For(i,'A','A'+n-1)
     60          {
     61            sum=0;
     62            For(j,'A','A'+n-1)
     63             if(f[i][j])
     64             sum++;
     65             
     66               if(sum==n-k)
     67               {
     68               ans[k]=(char)i;
     69               flag=true;
     70               break;    
     71               }
     72         }
     73         if(!flag)
     74         return 2;
     75     }
     76     return 1;
     77 }
     78 
     79 int main()
     80 {
     81     in(n),in(m);
     82     For(i,1,m)
     83     {
     84         cin>>a;
     85         f[a[0]][a[2]]=true;
     86         x=floyed();
     87         if(x==0)
     88         {
     89         printf("Inconsistency found after %d relations.",i);
     90         exit(0);    
     91         }
     92         else
     93         if(x==1)
     94         {
     95         printf("Sorted sequence determined after %d relations: ",i);
     96         For(j,1,n)
     97         printf("%c",ans[j]);
     98         printf(".");
     99         exit(0);    
    100         }
    101     }
    102     printf("Sorted sequence cannot be determined.");
    103      return 0;
    104 }
  • 相关阅读:
    NYOJ 23 取石子(一)
    XYNUOJ 2026 素数环
    XYNUOJ 1756 魔法工会
    XYNUOJ 1784 胜利大逃亡
    NYOJ 18 The Triangle
    NYOJ 737 合并石子
    XYNUOJ 问题 B: 敌兵布阵
    NYOJ 1063 生活的烦恼
    XYNUOJ 1774 最少拦截系统
    XYNUOJ 1248 排队打水问题
  • 原文地址:https://www.cnblogs.com/war1111/p/7727088.html
Copyright © 2011-2022 走看看