zoukankan      html  css  js  c++  java
  • 【t082】牛跑步

    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】

    新牛到部队,CG要求它们每天早上搞晨跑,从A农场跑到B农场。从A农场到B农场中有n-2个路口,分别标上号,A农场为1号,B农场
    为n号,路口分别为2…n-1号,从A 农场到B农场有很多条路径可以到达,而CG发现有的路口是必须经过的,即每条路径都经过
    的路口,CG要把它们记录下来,这样CG就可以先到那个路口,观察新牛们有没有偷懒,而你的任务就是找出所有必经路口。
    【输入格式】

    第一行两个用空格隔开的整数n(3≤n≤2000)和e(1≤e≤8000)。
    接下来从第2到第e+1行,每行两个用空格隔开的整数p和q,表示路口p和q之间有路径直达。
    输入数据保证必经路口一定存在,并且每个路口都和A农场、B农场相连通。

    【输出格式】

    第一行一个整数m,表示必经路口的数目。
    第二行按从小到大的顺序依次输出每个必经路口的编号,每两个数之间用一个空格隔开。
    注意:不包括起点和终点。

    Sample Input

    6 6
    1 2
    2 4
    2 3
    3 5
    4 5
    5 6

    Sample Output

    2
    2 5

    【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t082

    【题解】

    枚举第i个点;
    把这个点删掉;(dfs的时候忽略这个点就好);
    然后从点1开始dfs;
    看看能不能从点1到点n;
    如果不可以到n那么就表明删掉的这个点是个必经点;
    (会有环。。所以加个bool数组吧。不然9个RE在等着你)

    【完整代码】

    #include <cstdio>
    #include <vector>
    using namespace std;
    #define rei(x) scanf("%d",&x)
    #define rep1(i,x,y) for (int i = x;i <= y;i++)
    #define pb push_back
    
    const int MAXN = 2e3+100;
    
    int n,e,dd;
    bool bo[MAXN];
    vector <int> G[MAXN],v;
    
    void dfs(int x)
    {
        bo[x] = true;
        int len = G[x].size();
        rep1(i,0,len-1)
        {
            int y = G[x][i];
            if (!bo[y] && y!=dd)
                dfs(y);
        }
    }
    
    int main()
    {
        //freopen("F:\rush.txt","r",stdin);
        rei(n);rei(e);
        rep1(i,1,e)
        {
            int x,y;
            rei(x);rei(y);
            G[x].pb(y);
            G[y].pb(x);
        }
        rep1(ee,2,n-1)
        {
            rep1(i,1,n)
                bo[i] = false;
            dd = ee;
            bo[1] = true;
            dfs(1);
            if (!bo[n])
                v.pb(ee);
        }
        int len = v.size();
        printf("%d
    ",len);
        rep1(i,0,len-1)
            {
                printf("%d",v[i]);
                if (i==len-1)
                    puts("");
                else
                    putchar(' ');
            }
        return 0;
    }
  • 相关阅读:
    SQL Serever学习16——索引,触发器,数据库维护
    微信WeUI基础
    SQL Serever学习15——进阶
    SQL Serever学习14——存储过程和触发器
    微信WeUI入门2
    微信WeUI入门
    数据库—索引
    数据库—四种存储引擎
    视图
    事务
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626696.html
Copyright © 2011-2022 走看看