• UVA 208 Firetruck


    https://vjudge.net/problem/UVA-208

    题意:

    按字典序输出1到k的所有路径

    先从k  bfs一遍,判断有哪些点能到k

    枚举的时候只枚举能到k的点

    #include<queue>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    int k,sum;
    
    bool e[21][21];
    bool ok[21];
    bool vis[21];
    
    int road[21];
    bool have[21];
    
    bool maybe()
    {
        memset(vis,false,sizeof(vis));
        queue<int>q;
        q.push(k); vis[k]=true; 
        int now;
        while(!q.empty())
        {
            now=q.front(); q.pop();
            for(int i=1;i<=20;i++)
                if(e[now][i] && !vis[i]) vis[i]=true,q.push(i); 
        }
        return vis[1];
    }
    
    void dfs(int now,int cnt)
    {
        have[now]=true; road[cnt]=now;
        if(now==k)
        {
            for(int i=1;i<cnt;i++) printf("%d ",road[i]);
            printf("%d
    ",k);
            sum++;
        }
        for(int i=1;i<=20;i++)
            if(!have[i] && vis[i] && e[now][i]) dfs(i,cnt+1);
        have[now]=false;
    }
    
    int main()
    {
        int T=0; int u,v;
        while(scanf("%d",&k)!=EOF)
        {
            printf("CASE %d:
    ",++T);
            memset(e,false,sizeof(e));
            memset(ok,false,sizeof(ok));
            while(1)
            {
                scanf("%d%d",&u,&v);
                if(!u) break;
                e[u][v]=e[v][u]=true;
            }
            sum=0;
            memset(have,false,sizeof(have));
            if(maybe())  dfs(1,1);
            printf("There are %d routes from the firestation to streetcorner %d.
    ",sum,k);    
        }
    }
  • 相关阅读:
    RedissonConfProperty
    IdGenerator(雪花)
    Btrace和arthas地址
    SqlFilter
    AuthorityFilter
    111
    分布式数据库-杂记
    站点集群
    分布式精华文章
    高并发
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/7670125.html
Copyright © 2020-2023  润新知