Skip to content

Commit c92fb83

Browse files
committed
modify code
1 parent c8f895d commit c92fb83

File tree

2 files changed

+180
-0
lines changed

2 files changed

+180
-0
lines changed

src/class183/Code05_Message1.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package class183;
22

33
// 消息传递,java版
4+
// 一共有n个节点,给定n-1条边,所有节点组成一棵树
5+
// 如果x号节点收到一个消息,那么消息会从x开始扩散,速度为每天越过一条边
6+
// 接下来有m条查询,每条查询都是相互独立的,格式如下
7+
// 查询 x k : 第0天的时候,x号节点得到一条信息,打印第k天时,新收到该消息的人数
8+
// 1 <= n、m <= 10^5
9+
// 0 <= k < n
410
// 测试链接 : https://www.luogu.com.cn/problem/P6626
511
// 提交以下的code,提交时请把类名改成"Main",可以通过所有测试用例
612

src/class183/Code05_Message2.java

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
package class183;
2+
3+
// 消息传递,C++版
4+
// 一共有n个节点,给定n-1条边,所有节点组成一棵树
5+
// 如果x号节点收到一个消息,那么消息会从x开始扩散,速度为每天越过一条边
6+
// 接下来有m条查询,每条查询都是相互独立的,格式如下
7+
// 查询 x k : 第0天的时候,x号节点得到一条信息,打印第k天时,新收到该消息的人数
8+
// 1 <= n、m <= 10^5
9+
// 0 <= k < n
10+
// 测试链接 : https://www.luogu.com.cn/problem/P6626
11+
// 如下实现是C++的版本,C++版本和java版本逻辑完全一样
12+
// 提交如下代码,可以通过所有测试用例
13+
14+
//#include <bits/stdc++.h>
15+
//
16+
//using namespace std;
17+
//
18+
//struct Node {
19+
// int tim, qid;
20+
//};
21+
//
22+
//const int MAXN = 100001;
23+
//int t, n, m;
24+
//
25+
//int headg[MAXN];
26+
//int nextg[MAXN << 1];
27+
//int tog[MAXN << 1];
28+
//int cntg;
29+
//
30+
//int headq[MAXN];
31+
//int nextq[MAXN];
32+
//int tim[MAXN];
33+
//int qid[MAXN];
34+
//int cntq;
35+
//
36+
//bool vis[MAXN];
37+
//int siz[MAXN];
38+
//int maxPart[MAXN];
39+
//int total;
40+
//int centroid;
41+
//
42+
//int depCnt[MAXN];
43+
//int maxDep;
44+
//
45+
//Node arr[MAXN];
46+
//int cnta;
47+
//
48+
//int ans[MAXN];
49+
//
50+
//void addEdge(int u, int v) {
51+
// nextg[++cntg] = headg[u];
52+
// tog[cntg] = v;
53+
// headg[u] = cntg;
54+
//}
55+
//
56+
//void addQuery(int u, int t, int id) {
57+
// nextq[++cntq] = headq[u];
58+
// tim[cntq] = t;
59+
// qid[cntq] = id;
60+
// headq[u] = cntq;
61+
//}
62+
//
63+
//void getCentroid(int u, int fa) {
64+
// siz[u] = 1;
65+
// maxPart[u] = 0;
66+
// for (int e = headg[u]; e; e = nextg[e]) {
67+
// int v = tog[e];
68+
// if (v != fa && !vis[v]) {
69+
// getCentroid(v, u);
70+
// siz[u] += siz[v];
71+
// maxPart[u] = max(maxPart[u], siz[v]);
72+
// }
73+
// }
74+
// maxPart[u] = max(maxPart[u], total - siz[u]);
75+
// if (centroid == 0 || maxPart[u] < maxPart[centroid]) {
76+
// centroid = u;
77+
// }
78+
//}
79+
//
80+
//void dfs(int u, int fa, int dep) {
81+
// depCnt[dep]++;
82+
// maxDep = max(maxDep, dep);
83+
// for (int e = headq[u]; e; e = nextq[e]) {
84+
// if (tim[e] + 1 >= dep) {
85+
// arr[++cnta] = { tim[e] - dep + 2, qid[e] };
86+
// }
87+
// }
88+
// for (int e = headg[u]; e; e = nextg[e]) {
89+
// int v = tog[e];
90+
// if (v != fa && !vis[v]) {
91+
// dfs(v, u, dep + 1);
92+
// }
93+
// }
94+
//}
95+
//
96+
//void calc(int u) {
97+
// cnta = 0;
98+
// maxDep = 0;
99+
// dfs(u, 0, 1);
100+
// for (int i = 1; i <= cnta; i++) {
101+
// ans[arr[i].qid] += depCnt[arr[i].tim];
102+
// }
103+
// for (int d = 1; d <= maxDep; d++) {
104+
// depCnt[d] = 0;
105+
// }
106+
// for (int e = headg[u]; e; e = nextg[e]) {
107+
// int v = tog[e];
108+
// if (!vis[v]) {
109+
// cnta = 0;
110+
// maxDep = 0;
111+
// dfs(v, u, 2);
112+
// for (int i = 1; i <= cnta; i++) {
113+
// ans[arr[i].qid] -= depCnt[arr[i].tim];
114+
// }
115+
// for (int d = 1; d <= maxDep; d++) {
116+
// depCnt[d] = 0;
117+
// }
118+
// }
119+
// }
120+
//}
121+
//
122+
//void solve(int u) {
123+
// vis[u] = true;
124+
// calc(u);
125+
// for (int e = headg[u]; e; e = nextg[e]) {
126+
// int v = tog[e];
127+
// if (!vis[v]) {
128+
// total = siz[v];
129+
// centroid = 0;
130+
// getCentroid(v, u);
131+
// solve(centroid);
132+
// }
133+
// }
134+
//}
135+
//
136+
//void prepare() {
137+
// cntg = 0;
138+
// cntq = 0;
139+
// for (int i = 1; i <= n; i++) {
140+
// headg[i] = 0;
141+
// headq[i] = 0;
142+
// vis[i] = false;
143+
// }
144+
// for (int i = 1; i <= m; i++) {
145+
// ans[i] = 0;
146+
// }
147+
//}
148+
//
149+
//int main() {
150+
// ios::sync_with_stdio(false);
151+
// cin.tie(nullptr);
152+
// cin >> t;
153+
// for (int c = 1; c <= t; c++) {
154+
// cin >> n >> m;
155+
// prepare();
156+
// for (int i = 1, u, v; i < n; i++) {
157+
// cin >> u >> v;
158+
// addEdge(u, v);
159+
// addEdge(v, u);
160+
// }
161+
// for (int i = 1, x, k; i <= m; i++) {
162+
// cin >> x >> k;
163+
// addQuery(x, k, i);
164+
// }
165+
// total = n;
166+
// centroid = 0;
167+
// getCentroid(1, 0);
168+
// solve(centroid);
169+
// for (int i = 1; i <= m; i++) {
170+
// cout << ans[i] << '\n';
171+
// }
172+
// }
173+
// return 0;
174+
//}

0 commit comments

Comments
 (0)