zoukankan      html  css  js  c++  java
  • hdu 4324 Triangle LOVE 拓扑排序

    #include<stdio.h>
    #include<stack>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    int mp[2000 + 5][2000 + 5], in[2000 + 5],u[2000+5];
    int main()
    {
        int _, i, j, k, n, cas = 0,t;
        char s[2000 + 5];
        bool flag;
        scanf("%d", &_);
        while (_--)
        {
            memset(mp, 0, sizeof(mp));
            memset(in,0,sizeof(in));
            memset(u,0,sizeof(u));
            scanf("%d", &n);
            flag=0;
            for (i = 0; i < n; i++)
            {
                scanf("%s", s);
                for (j = 0; j < n; j++)
                {
                    if (s[j] == '1')
                    {
                        mp[i][j] = 1;
                        in[j]++;
                    }
                }
            }
            stack<int>s;
            while(!s.empty()) s.pop();
            for(i=0;i<n;i++)
                {
                    if(in[i]==0) s.push(i);
                }
    
            while(!s.empty())
            {
                t=s.top();
                u[t]=1;
                s.pop();
                for(i=0;i<n;i++)
                {
                    if(mp[t][i])
                    {
                        in[i]--;
                        if(in[i]==0) s.push(i);
                    }
                }
            }
            for (i = 0; i < n; i++)
            {
                if(u[i]) continue;
                for (k = i+1; k < n; k++)
                {
                    if(u[k]) continue;
                    if (!mp[i][k]||mp[k][i]) continue;
                    for (j = 0; j < n; j++)
                    {
                        if(u[j]) continue;
                        if (mp[k][j] && mp[j][i]&&!mp[j][k]&&!mp[i][j])
                        {
                            flag = 1;
                            break;
                        }
                    }
                    if (flag) break;
                }
                if (flag) break;
            }
    
            if (!flag)
                printf("Case #%d: No
    ", ++cas);
            else
                printf("Case #%d: Yes
    ", ++cas);
        }
        return 0;
    }
  • 相关阅读:
    [转]mysql视图学习总结
    [转]mysql索引详解
    mysql索引的操作
    [转]mysql的约束
    mysql表的操作
    【转】mysql的数据类型
    java泛型
    java 8新特性
    Dubbo有意思的特性介绍
    dubbo + zookeeper
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7403644.html
Copyright © 2011-2022 走看看