一个疑问
查看原帖
一个疑问
505524
StarSum楼主2022/9/2 10:10

本人代码如下:

#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
vector<vector<int> >adj;
const int N=1e3+5;
int w[N][N];
int n,k;
int c;
int dis[N],vis[N],f[N];
int min1=999999;
void dfs(int m,int fa){
	if (vis[m]) return ;
	vis[m]=1;
	f[m]=fa;
	dis[m]=dis[fa]+w[fa][m];
	if (dis[m]>dis[c])
		c=m;
	for (int i=0;i<adj[m].size();i++){
		dfs(adj[m][i],m);
	}
}
int main(){
	cin>>n>>k;
	adj.resize(n+5);
	for (int i=1;i<=n-1;i++){
		int u,v,W;
		cin>>u>>v>>W;
		adj[u].push_back(v);
		adj[v].push_back(u);
		w[u][v]=w[v][u]=W;
	}
	dfs(1,0);
	int c1=c;
	memset(vis,0,sizeof(vis));
	memset(dis,0,sizeof(dis));
	dfs(c,0);
	int road=dis[c];
	int rem,rem1;
	for (int i=c;i;i=f[i]){
		rem=max(dis[i],road-dis[i]);
		for (int j=f[i];j&&(dis[i]-dis[j])<=k;j=f[j]){
			rem1=max(dis[j],road-dis[i]);
		}
		min1=min(min(min1,rem),rem1);
		rem=1e4;
		rem1=1e4;
	}
	cout<<min1;
	return 0;
}

现在的问题是第4个点WA,但是我把数据下载之后放到自己的电脑上运行时得到的答案是正确的,请问这是什么情况?

2022/9/2 10:10
加载中...