首页 > 代码库 > uva 1572
uva 1572
///应该可以写了 ///加油,最棒的自己,亲爱的自己! #include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; #define maxn 100 int go[maxn][maxn]; int vis[maxn]; int n; char s[10]; int change(char a,char b) { if(a=='0') return 0; int u=a-'A'+1; if(b=='-') u+=26; return u; } int Reverse(int u) { if(u==0) return 0; else if(u>26) u-=26; else u+=26; return u; } bool dfs(int u)///如果没有有向环,则可以构成拓扑排序 { vis[u]=-1; for(int i=1; i<=52; i++) if(go[u][i]) { if(vis[i]==-1) return false; else if(!vis[i]&&!dfs(i)) return false; } vis[u]=1; return true; } bool topu() { for(int i=1; i<=52; i++) { if(!vis[i]&&!dfs(i)) return false; } return true; } int main() { int n; while(~scanf("%d",&n)&&n) { memset(go,0,sizeof(go)); memset(vis,0,sizeof(vis)); for(int k=0; k<n; k++) { scanf("%s",s); for(int i=0; i<7; i+=2) for(int j=0; j<7; j+=2) if(i!=j) { int u=change(s[i],s[i+1]); int v=change(s[j],s[j+1]); v=Reverse(v); if(u&&v) go[u][v]=1; } } // bool flag=false; // for(int i=1; i<=52; i++) // { // if(!vis[i]) // flag=dfs(i); // if(flag) // break; // } if(!topu()) cout<<"unbounded\n"; else cout<<"bounded\n"; } return 0; }
uva 1572
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。