码迷,mamicode.com
首页 > 其他好文 > 详细

gene

时间:2017-09-13 20:23:39      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:name   ret   http   strong   namespace   push   cst   return   pre   

技术分享

 

技术分享

技术分享

 输入:

3
A+00A+A+ 00B+D+A- B-C+00C+

输出:

bounded

技术分享

说明一下100%的题解

假设一个单位为0000A+B-

那么显然这个方块可以连接B+和A-

那么建图就是A+~B+,B-~A-

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<queue>
 6 using namespace std;
 7 char str[10001];
 8 int map[54][54],d[54],cnt;
 9 queue<int>Q;
10 int n;
11 int num(char x,char y)
12 {
13   if (x==0) return 52;
14   if (y==+)
15     return ((int)x-A);
16   else return ((int)x-A+26);
17 }
18 int main()
19 {int i,j,k;
20   cin>>n;
21   for (i=1;i<=n;i++)
22     {
23       scanf("%s",str+1);
24       for (j=1;j<=4;j++)
25     {
26       for (k=1;k<=4;k++)
27         {
28           if (j==k) continue;
29           int x=num(str[2*j-1],str[2*j]);
30           int y=num(str[2*k-1],str[2*k]);
31           if (x==52||y==52) continue;
32           if (y>=26) y-=26;
33           else y+=26;
34           map[x][y]=1;
35         }
36     }
37     }
38   for (i=0;i<52;i++)
39     for (j=0;j<52;j++)
40       if (map[i][j]) d[j]++;
41   for (i=0;i<52;i++)
42     if (d[i]==0) cnt++,Q.push(i);
43   while (Q.empty()==0)
44     {
45       int u=Q.front();
46       Q.pop();
47       for (i=0;i<52;i++)
48     if (map[u][i])
49       {
50         d[i]--;
51         if (d[i]==0)
52           {
53         cnt++;
54         Q.push(i);
55           }
56       }
57     }
58   if (cnt==52)
59     {
60       cout<<"bounded\n";
61     }
62   else
63     {
64       cout<<"unbounded\n";
65     }
66 }

 

gene

标签:name   ret   http   strong   namespace   push   cst   return   pre   

原文地址:http://www.cnblogs.com/Y-E-T-I/p/7517346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!