zoukankan      html  css  js  c++  java
  • [ZOJ

    水题不多说。上代码

    /*这题主要是因为文件数一定是1到n,不具有普遍性
    不过成环判定确实巧妙,先将输入按数组存好,
    之后在查找的时候交换行列,将列变为未知量一个个查找
    若数字未被使用过则标记为1(使用过)
    之后将找到的数字作为前面的数传入寻找与它相连的数,若找到了但被用过了即代表循环了
    就变成了寻找是否有数字相连且是否被标记过(循环)
    vis数组代表的是有没有数组与它相连过*/
    
    
    
    #include<stdio.h>
    #include<string.h>
    #define M 107
    
    int g[M][M],vis[M],flag,n;
    void dfs(int u)
    {
        for(int i=1;i<=n;i++)
        {
            if(!flag)
                return;
            else if(vis[i]&&g[u][i])
            {
                flag=0;
                return;
            }
            else if(g[u][i])
            {
                vis[i]=1;
                dfs(i);
                vis[i]=0;
            }
        }
    }
    int main()
    {
        while(~scanf("%d",&n)&& n!=-1)
        {
    
            memset(vis,0,sizeof(vis));
            memset(g,0,sizeof(g));
            int u,v;
            flag=1;
            for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&u,&v);
                if(u!=v)//如果不加,会WA,已验证
                    g[u][v]=1;
            }
    
            int in;
    
            scanf("%d",&in);
            vis[in]=1;
            dfs(in);
            if(flag)
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    [07] Redis 持久化
    [06] Redis 事务
    [05] Jedis
    [04] Redis 配置文件
    [03] Redis 数据类型
    [02] Redis 简介&安装
    [01] NoSQL 简介
    06-NULL&typedef
    05-动态内存分配
    朴素贝叶斯分类器Naive Bayes
  • 原文地址:https://www.cnblogs.com/Vikyanite/p/11382458.html
Copyright © 2011-2022 走看看