美文网首页一起来刷算法题
遍历无向连通图所需的最小路程

遍历无向连通图所需的最小路程

作者: cherryleechen | 来源:发表于2019-05-19 19:33 被阅读0次

问题描述

一张包含N个节点、N-1条边的无向连通图,其中,节点从1到N进行编号,每条边的长度均为1。假设从1号节点出发并打算遍历图中所有节点,那么所需要的总路程至少是多少?

解题思路

一共N-1条边,每条边走2次,共2*(N-1)大小的总路程。当不回头的path为最大深度path时,总路程最小。记最大深度值为d,则最小总路程等于2*(N-1)-d

程序实现

#include<bits/stdc++.h> //万能头文件,包含了目前C++所包含的所有头文件
using namespace std;

const int MAXN=100001;
vector<vector<int>> vec(MAXN);
int deep;

void dfs(int start,int prev,int w){
    for(int i=0;i<vec[start].size();i++){
        if(vec[start][i]==prev) continue;
        dfs(vec[start][i],start,w+1);
        }
    deep=max(deep,w);
    }

int main(){
    int N;
    cin>>N;
    for(int i=1;i<N;i++){
        int x,y;
        cin>>x>>y;
        vec[x].push_back(y);
        vec[y].push_back(x);
    }
    deep=0;
    dfs(1,-1,0);
    cout<<2*(N-1)-deep<<endl;
    return 0;
}

相关文章

  • 遍历无向连通图所需的最小路程

    问题描述 一张包含个节点、条边的无向连通图,其中,节点从1到进行编号,每条边的长度均为1。假设从1号节点出发并打算...

  • 图的连通法之普里姆算法和卡鲁斯卡尔算法

    最小生成树 连通图:图的连通其实就是树,图的最小连通图其实就是最小生成树。 树:如果一个无向连通图中不存在回路,则...

  • 贪心算法:最小生成树,霍夫曼编码

    最小生成树 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。强连通图(Strong...

  • 【算法】最小生成树

    最小生成树是指,在边有权重的连通无向图上,图的总权重最小的连通子集(所有的结点都被连通,选取的边具有最小的权重和)...

  • 最小生成树算法

    一、定义 最小生成树(Minimum Spanning Tree,MST)仅针对加权连通无向图。对于一副加权连通无...

  • 图的连通性

    一、连通分量 1.1 定义 连通分量是针对无向图的,无向图G的极大连通子图称为G的连通分量( Connected ...

  • 活动分组——无向图的连通分量个数

    一、相关概念 连通分量 无向图中,极大连通子图称为连通分量1)连通图的连通分量只有一个,即自身2)非连通的无向图有...

  • 图的基本概念2

    连通(无向图)与强连通(有向图) 常考考点:n个顶点的连通图(强连通图)最少有多少条边 如果原图是一个连通图或者强...

  • 离散数学大概(四)

    树连通无回路的无向图称为无向树,或树。每个连通分支都是树的无向图称为森林。平凡图称为平凡树。在无向树中,悬挂顶点(...

  • 数据结构 图Graph

    一些概念: 连通图:在无向图中,若任意两个顶点v与u都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若...

网友评论

    本文标题:遍历无向连通图所需的最小路程

    本文链接:https://www.haomeiwen.com/subject/mmbqzqtx.html