cf C. Purification

http://codeforces.com/contest/330/problem/C

这道题分三种情况。有一行全是E,有一列全是E,还有一种为无解的情况。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <algorithm>

 4 #define maxn 200

 5 using namespace std;

 6 

 7 char g[maxn][maxn];

 8 int r[maxn],c[maxn];

 9 

10 int main()

11 {

12     int n;

13     scanf("%d",&n);

14     for(int i=0; i<n; i++)

15     {

16         scanf("%s",g[i]);

17     }

18     memset(r,0,sizeof(r));

19     memset(c,0,sizeof(c));

20     bool flagr=false;

21     bool flagc=false;

22     for(int i=0; i<n; i++)

23     {

24         for(int j=0; j<n; j++)

25         {

26             if(g[i][j]=='E')

27             {

28                 r[i]++;

29                 c[j]++;

30                 if(r[i]==n) flagr=true;

31                 if(c[j]==n) flagc=true;

32             }

33         }

34     }

35     if(flagc&&flagr)

36     {

37         printf("-1\n");

38         return 0;

39     }

40     if(flagr)

41     {

42         for(int i=0; i<n; i++)

43         {

44             for(int j=0; j<n; j++)

45             {

46                 if(g[j][i]=='.')

47                 {

48                     printf("%d %d\n",j+1,i+1);

49                     break;

50                 }

51             }

52         }

53     }

54     else if(flagc)

55     {

56         for(int i=0; i<n; i++)

57         {

58             for(int j=0; j<n; j++)

59             {

60                 if(g[i][j]=='.')

61                 {

62                     printf("%d %d\n",i+1,j+1);

63                     break;

64                 }

65             }

66         }

67     }

68     else

69     {

70         for(int i=0; i<n; i++)

71         {

72             for(int j=0; j<n; j++)

73             {

74                 if(g[i][j]=='.')

75                 {

76                     printf("%d %d\n",i+1,j+1);

77                     break;

78                 }

79             }

80         }

81     }

82     return 0;

83 }
View Code

 

你可能感兴趣的:(uri)