Problem A. Planet Distance Google Kickstart Round C 2018

题意:给定一个存在一个环的graph,每条边的权重都等于1,求图中Node到环的距离。

首先通过dfs找到图中的环。把每个node作为起点搜索,如果在branch中找到了起点,则说明找到了环。期间需要用visit数组标记访问过的node,防止重复搜索。

因为图的权重为1,找到环之后对每个不在环上的node进行bfs,如果扩展到了环上的Node,对应距离就是最短距离。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

const int maxn=1010;
int N;
int T;
int mp[maxn][maxn];
int dist[maxn];
vectorcircle;
setcircleset;
int start;
int first;
bool flgfind=false;
bool visit[maxn][maxn];
void dfs(int curr,int pre)
{
    if(curr==start&&first==1)
    {
        //cout<<"start "<que=queue();
    bool visited[maxn][maxn];
    memset(visited,false,sizeof(visited));
    que.push(node(i,0));
    while(!que.empty())
    {
        node tmp=que.front();
        int now=tmp.id;
        que.pop();
        for(int j=0;j>T;
    for(int ca=1;ca<=T;ca++)
    {
        memset(mp,0,sizeof(mp));
        memset(dist,0,sizeof(dist));
        flgfind=false;
        circle.clear();
        circleset.clear();
        scanf("%d",&N);
        //cout<

 

你可能感兴趣的:(Problem A. Planet Distance Google Kickstart Round C 2018)