zoukankan      html  css  js  c++  java
  • UVA-1572 Self-Assembly (图+拓扑排序)

    题目大意:每条边上都有标号的正方形,两个正方形能通过相匹配的边连接起来,每种正方形都有无限多个。问能否无限延展下去。

    题目分析:将边视为点,正方形视为边,建立无向图,利用拓扑排序判断是图否为DAG。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<map>
    # include<queue>
    # include<string>
    # include<vector>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    int vis[55],mp[55][55];
    
    int get(char a,char b)
    {
        return (a-'A')*2+((b=='+')?1:0);///因为在这没注意运算符的优先级,一直WA。。。。。。
    }
    
    void f(char *p)
    {
        for(int i=0;i<8;i+=2){
            if(p[i]=='0')  continue;
            for(int j=0;j<8;j+=2){
                if(i==j||p[j]=='0')  continue;
                int a=get(p[i],p[i+1])^1;
                int b=get(p[j],p[j+1]);
                mp[a][b]=1;
            }
        }
    }
    
    bool dfs(int u)
    {
        vis[u]=-1;
        for(int i=0;i<52;++i){
            if(!mp[u][i])
                continue;
            if(vis[i]==-1)
                return true;
            if(!vis[i]&&dfs(i))
                return true;
        }
        vis[u]=1;
        return false;
    }
    
    bool judge()
    {
        memset(vis,0,sizeof(vis));
        for(int i=0;i<52;++i)
            if(!vis[i]&&dfs(i))
                return true;
        return false;
    }
    
    int main()
    {
        int n;
        char p[9];
        while(scanf("%d",&n)==1)
        {
            memset(mp,0,sizeof(mp));
            while(n--)
            {
                scanf("%s",p);
                f(p);
            }
            if(judge())
                printf("unbounded
    ");
            else
                printf("bounded
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    PHP 缓存技术
    redis雪崩
    【Redis】- 缓存击穿
    Memcache 与 Memcached 的区别
    数据库设计:范式与反范式
    Thinkphp5多数据库切换
    PHP 分布式集群中session共享问题以及session有效期的设置
    Nginx使用upstream实现动静分离
    rsync 服务快速部署手册
    tp5 为什么使用单例模式
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/4865237.html
Copyright © 2011-2022 走看看