uva 1572
2015-01-05 11:00
295 查看
///应该可以写了 ///加油,最棒的自己,亲爱的自己! #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 - Self-Assembly <图论模型+拓扑排序>
- UVa 1572 拓扑排序 判断有向图是否有环
- UVA - 1572
- UVA 1572 Self-Assembly
- UVa1572 UVaLive6393 Self-Assembly
- [UVa 1572] 自组合(Self-Assembly)
- Uva1572——Self-Assembly
- uvalive 6393(uva 1572) Self-Assembly 拓扑排序
- uva1572 Self-Assembly 拓扑排序 提炼有向图模型
- UVA-1572 Self-Assembly (图+拓扑排序)
- UVa_10115 - Automatic Editing(POJ 1572)
- 例题6 - 19 uva1572 Self-Assembly 拓扑排序
- 【例题 6-19 UVA - 1572】Self-Assembly
- Uva1572 Self-Assembly 【建立图论模型拓扑排序】【例题6-19】
- UVA 1572 Self-Assembly 拓扑排序
- UVa 1572 (拓扑排序) Self-Assembly
- UVA - 1572 Self-Assembly (状态化简,找环)
- UVA - 1572 Self-Assembly