Game Map

题目链接

这个题我用DFS做的,但好像也可以不用,如果用DFS的话需要用到剪枝,否则会超时。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <map>
#include <vector>
#include <cstring>
#include <string>
using namespace std;
vector<int>mapp[300005];
int num[300005];
int maxx=0;
int f[300005];
void dfs(int depth,int x)
{
    if(maxx<depth)
    {
        maxx=depth;
    }
    int len=mapp[x].size();
    int i;
    for(i=0; i<len; i++)
    {
        int next = mapp[x][i];
        if(num[x]<num[next])
        {
            if(f[next]<f[x]+1)
            {
                f[next] = f[x]+1;
                dfs(depth+1,next);
            }
        }
    }

}
int main()
{
    int ans=0;
    int n,m,i;
    int u,v;
    scanf("%d%d",&n,&m);
    for(int i=0; i<n; i++)
    {
        f[i] = 1;
    }
    for(i=0; i<m; i++)
    {
        scanf("%d%d",&u,&v);
        mapp[u].push_back(v);
        mapp[v].push_back(u);
    }
    for(i=0; i<n; i++)
    {
        num[i]=mapp[i].size();
    }
    for(i=0; i<n; i++)
    {
        maxx=0;
        dfs(1,i);
        if(ans<maxx)
        {
            ans=maxx;
        }
    }
    printf("%d",ans);
}
上一篇:搭建idea出现无法自动映射Mapper问题


下一篇:dfs