zoukankan      html  css  js  c++  java
  • CCF 201512-4 送货(错误)

    直接用DFS深搜,检查了好久没能发现错误,贴上来以后慢慢看。。。

    /*
    DFS深度优先搜索
    Edge保存边  u{v,been}
    cnt记录走过的街道
    如果没有就return ;继续递归
    */
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #define MAXN 10001
    using namespace std;
    struct Edge
    {
        int v;
        Edge(int _v=0):v(_v){}
    };
    vector<Edge> E[MAXN];
    inline void addedge(int u,int v)
    {
        E[u].push_back(Edge(v));
    }
    int n,m,k=0;
    int cnt = 0;//记录走过的边的个数
    int route[MAXN];
    bool been[MAXN][MAXN];
    bool f = false;
    void print()
    {
        for(int i=0;i<k;i++)
        {
            if(i) cout<<' ';
            cout<<route[i];
        }
        //cout<<endl;
    }
    void dfs(int i)
    {
        if(f)
            return ;
        if(cnt==m)
        {
            f = true;
            route[k++]= i;
            print();
            return ;
        }
        if(!E[i].size())
            return ;
        for(int j=0;j<E[i].size();j++)
        {
            int v=E[i][j].v;
            if(!been[i][v])
            {
                route[k++] = i;//记录路径
                been[i][v]=been[v][i]=true;//标记
                cnt++;//走过数量+1
                dfs(v);
                cnt--;
                been[i][v]=been[v][i]=false;
                k--;
            }
        }
    }
    int main()
    {
        int x,y;
        cin>>n>>m;
        for(int i=0;i<m;i++)
        {
            scanf("%d%d",&x,&y);
            addedge(x,y);
            addedge(y,x);
        }
        dfs(1);
        if(!f)
            cout<<-1<<endl;
        return 0;
    }
  • 相关阅读:
    zbb20180930 Postman 使用方法详解
    Cookie、Session、jsp、EL、JSTL
    Http协议、Tomcat、servlet
    xml、网络编程、 反射
    JDBC、DBUtils
    Java IO流对象、多线程
    mySql
    Java基础
    VueJs
    GIT
  • 原文地址:https://www.cnblogs.com/joeylee97/p/6155674.html
Copyright © 2011-2022 走看看