WA on test 5求调
  • 板块CF839C Journey
  • 楼主52wyd
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/15 11:06
  • 上次更新2023/11/3 09:44:56
查看原帖
WA on test 5求调
816549
52wyd楼主2023/7/15 11:06

cf提交记录

CodeCode

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;
const int M = 2 * N;

int n;
int he[N], ed[M], ne[M], idx;
int passed[N];
double sum; // 总路程
int ways; // 总路径数

void add(int a, int b) {
	ed[idx] = b, ne[idx] = he[a], he[a] = idx ++;
}

void dfs(int u, int rode) { // u: 当前节点编号,rode: 走的路程
	int went = 0;
	for (int i = he[u]; i != -1; i = ne[i]) {
		int j = ed[i];
		if (passed[j] == 0) { // 这里没来过
			went = 1;
			passed[j] = 1;
			dfs(j, rode + 1);
			passed[j] = 0;
		}
	}
	if (!went) { // 如果u点是路的尽头,那么总路程sum += 这段路的长度,总路径数 ++;
		sum += rode;
		ways ++;
	}
}

int main() {
	
	memset(he, -1, sizeof he);

	cin >> n;
	
	for (int i = 1; i <= n - 1; i ++) {
		int a, b; cin >> a >> b;
		add(a, b);
		add(b, a);
	}
	
	passed[1] = 1; // 标记1节点来过
	dfs(1, 0); // 从1节点开始dfs

	cout << sum / ways << endl; // 总路程 / 总路径数
	return 0;
}
2023/7/15 11:06
加载中...