谁帮着瞟一眼我这个求树的直径代码对吗
  • 板块学术版
  • 楼主LinearXeno
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/29 01:58
  • 上次更新2024/10/29 14:41:05
查看原帖
谁帮着瞟一眼我这个求树的直径代码对吗
1053112
LinearXeno楼主2024/10/29 01:58

两遍dfs

#include<bits/stdc++.h>
using namespace std;
struct node{
	int v,w;
	node(int vv,int ww) {
		v = vv;
		w = ww;
		return;
	}
};
int n,m,ut,vt,wt,s,t,maxn = 0;
long long ans,dis[1010];
vector<node> g[1010];
void dfs(int u,int fa) {
	for (int i = 0;i < g[u].size();i ++) {
		int v = g[u][i].v,w = g[u][i].w;
		if (v != fa) {
			dfs(v,u);
			dis[v] = min(dis[v],dis[u] + w);
			if (maxn < dis[v]) {
				maxn = dis[v];
				t = v;
			}
		}
	}
	return;
}
int main() {
	scanf("%d%d",&n,&m);
	for (int i = 1;i <= m;i ++) {
		scanf("%d%d%d",&ut,&vt,&wt);
		g[ut].push_back(node(vt,wt));
		g[vt].push_back(node(ut,wt));
	}
	memset(dis,0x3f,sizeof(dis));
	dis[1] = 0;
	dfs(1,0);
	s = t;
	maxn = 0;
	memset(dis,0x3f,sizeof(dis));
	dis[s] = 0;
	dfs(s,0);
	printf("%lld\n",dis[t]);
	return 0;
}

2024/10/29 01:58
加载中...