zoukankan      html  css  js  c++  java
  • Firetruck(UVA 208)

    测评传送门


    思路:

    这是道独流搜索,题目出的很好,输出给毁了。一定注意!!不要多打空格!!!

    由于图会过于稠密,所以我们需要通过并查集剪枝,看从起点能不能到终点

    code

    #include<stdio.h> 
    #include<string.h>
    #include<vector>
    #include<algorithm> 
    using namespace std;
    const int MXN=25;
    vector<int> v[MXN];
    int n,fire,ub,ans;
    int fa[MXN],rout[MXN];
    bool vis[MXN];
    
    void ycl() 
    {
        for(int i=1;i<=MXN;++i) {
            v[i].clear();
            fa[i]=i;
        }
    }
    
    int Find(int x) {
        return x==fa[x]?x:fa[x]=Find(fa[x]);
    }
    
    void dfs(int x,int pos) 
    {
        rout[pos]=x;
        if(x==fire) {
            ans++;
            printf("%d",rout[1]);
            for(int i=2;i<=pos;++i) {
                printf(" %d",rout[i]);
            }
            printf("
    ");
            return ;
        }
        for(int i=0;i<v[x].size();++i) {
            int to=v[x][i];
            if(!vis[to]) {
                vis[to]=1;
                dfs(to,pos+1);
                vis[to]=0;
            }
        }
    }
    
    int main() 
    {
        int cas=0;
        while(scanf("%d",&fire)!=EOF) 
        {
            ycl();
            int from,to;
            while(scanf("%d%d",&from,&to) && from && to) {
                v[from].push_back(to);
                v[to].push_back(from);
                fa[Find(from)]=Find(to);
                ub=max(ub,max(from,to));
            }
            ans=0;
            printf("CASE %d:
    ",++cas);
            if(Find(1)!=Find(fire)) {
                printf("There are %d routes from the firestation to streetcorner %d.
    ",0,fire);
            }
            else {
                for(int i=1;i<=ub;++i) {
                    if(v[i].size()) {
                        sort(v[i].begin(),v[i].end());
                    }
                }
                memset(vis,0,sizeof(vis));
                vis[1]=1;
                dfs(1,1);
                printf("There are %d routes from the firestation to streetcorner %d.
    ",ans,fire);
            }
        }
    }
    /*
    6
    1 2
    1 3
    3 4
    3 5
    4 6
    5 6
    2 3
    2 4
    0 0
    4
    2 3
    3 4
    5 1
    1 6
    7 8
    8 9
    2 5
    5 7
    3 1
    1 8
    4 6
    6 9
    0 0
    */
  • 相关阅读:
    vba --barcode9.0 生成 code39
    利用JS 阻止表单提交
    VS2012变化的快捷键
    鼠标右击禁用
    计算机算法常用术语中英对照
    GrideView(三)---编辑功能实现
    GrideView(二)---删除功能
    GridView认识(一)
    微软 自带 AJAX 拓展
    C#日期函数使用大全
  • 原文地址:https://www.cnblogs.com/qseer/p/9806989.html
Copyright © 2011-2022 走看看