zoukankan      html  css  js  c++  java
  • 搜索——迭代加深

    cdcq学长又再次讲了迭代加深搜索,这个搜索呢是由bfs扩展的方向太多而dfs一条路走到黑很有可能GG,所以采用迭代加深搜索,就是限定一个范围来进行搜索,外形是dfs内部有一个搜索那就是bfs,每次扩展的边再来进行dfs这样的话相对于dfsorbfs答案在很小的地方效率会极高。

    一道迭代加深入门题路过,一棵树,找到层数最小的根节点。一个n,n-1行,输入两个数,前一个根节点,后一个父亲节点。

    关键就是for(int i=1;;i++)dfs(int x,int y,int  z)if(y==z)return;dfs(x,y+1,z);这样是迭代加深的基本通式.

    代码:

    #include<iostream>
    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<ctime>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<queue>
    #include<vector>
    #include<map>
    using namespace std;
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    const int maxn=100008;
    int lin[maxn],ver[maxn],len=0,nex[maxn];
    int n;
    void add(int x,int y)
    {
        ver[++len]=y;
        nex[len]=lin[x];
        lin[x]=len;
    }
    int dfs(int x,int y,int z)
    {
        if(lin[x]==0)return 1;
        if(y==z){return 0;}
        for(int i=lin[x];i;i=nex[i])
        if(dfs(ver[i],y+1,z)==1)return 1;
        return 0;
    }
    int main()
    {
        //freopen("1.in","r",stdin);
        n=read();
        if(n==1)
        {    printf("%d
    ",1);return 0;}
        for(int i=1;i<=n-1;i++)
        {
            int x,y;
            x=read();y=read();
            add(y,x);
        }
        for(int i=1;;i++)
            if(dfs(1,1,i)==1){printf("%d
    ",i);return 0;}
        return 0;
    }
    View Code

    VFK说过一句话
    “暴力A了就A了吧……用暴力A掉此题对于写程序的人来说没有任何益处,对我更没坏处。”

  • 相关阅读:
    Github开始强制使用PAT(Personal Access Token)了
    STM32F401的外部中断EXTI
    STM32F401的PWM输出
    STM32F103和STM32F401的ADC多通道采集DMA输出
    nRF24L01无线模块笔记
    51单片机(STC89C52)在Ubuntu下的开发
    51单片机(STC89C52)的中断和定时器
    51单片机的软件和硬件PCA/PWM输出
    Zadig 云原生持续交付 面向开发者设计的开源、高可用 CI/CD
    人生 乐观 悲观 英雄
  • 原文地址:https://www.cnblogs.com/chdy/p/9736406.html
Copyright © 2011-2022 走看看