Submission #944287

# Submission time Handle Problem Language Result Execution time Memory
944287 2024-03-12T14:08:14 Z vjudge1 Dynamic Diameter (CEOI19_diameter) C++17
11 / 100
5000 ms 24216 KB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
#define pb push_back
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define sz(v) (int)v.size()
 
const int INF = 1e18;
const int mod = 998244353;
const int N = 1e5+5;
vector<int> g[N];
map<pair<int,int>,int> w;

void solve(){
	int n, qr, maxw;
	cin >> n >> qr >> maxw;
	vector<pair<int,int> > edges;
	for(int i = 1; i < n; i++){
		int u, v, iw;
		cin >> u >> v >> iw;
		g[u].pb(v);
		g[v].pb(u);
		w[{u, v}] = iw;
		w[{v, u}] = iw;
		edges.pb({u, v});
	}
	int last = 0;
	while(qr--){
		int ind, val;
		cin >> ind >> val;
		ind = (ind + last) % (n - 1);
		val = (val + last) % maxw;
		auto [x, y] = edges[ind];
		w[{x, y}] = val;
		w[{y, x}] = val;
		
		vector<int> dis(n + 1, INF);
		dis[1] = 0;
		priority_queue<pair<int,int>, vector<pair<int,int> >, greater<pair<int,int> > > q;
		q.push({0, 1});
		while(!q.empty()){
			auto [disv, v] = q.top();
			q.pop();
			
			if(disv > dis[v]) continue;
			
			for(auto to : g[v]){
				if(dis[v] + w[{v, to}] < dis[to]){
					dis[to] = dis[v] + w[{v, to}];
					q.push({dis[to], to});
				}
			}
		}
		
		dis[0] = 0;
		int mx = max_element(all(dis)) - dis.begin();
		dis = vector<int>(n + 1, INF);
		dis[mx] = 0;
		q.push({0, mx});
		while(!q.empty()){
			auto [disv, v] = q.top();
			q.pop();
			
			if(disv > dis[v]) continue;
			
			for(auto to : g[v]){
				if(dis[v] + w[{v, to}] < dis[to]){
					dis[to] = dis[v] + w[{v, to}];
					q.push({dis[to], to});
				}
			}
		}
		
		dis[0] = 0;
		last = *max_element(all(dis));
		cout << last << '\n';
	}
}

main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	int tt = 1;
	//cin >> tt;
	while (tt--) {
		solve();
	}
}

Compilation message

diameter.cpp:84:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   84 | main(){
      | ^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2648 KB Output is correct
2 Correct 2 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2652 KB Output is correct
7 Correct 2 ms 2652 KB Output is correct
8 Correct 2 ms 2652 KB Output is correct
9 Correct 2 ms 2652 KB Output is correct
10 Correct 2 ms 2652 KB Output is correct
11 Correct 2 ms 2652 KB Output is correct
12 Correct 2 ms 2648 KB Output is correct
13 Correct 3 ms 2652 KB Output is correct
14 Correct 3 ms 2648 KB Output is correct
15 Correct 3 ms 2652 KB Output is correct
16 Correct 3 ms 2652 KB Output is correct
17 Correct 3 ms 2824 KB Output is correct
18 Correct 2 ms 2652 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2648 KB Output is correct
2 Correct 2 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2652 KB Output is correct
7 Correct 2 ms 2652 KB Output is correct
8 Correct 2 ms 2652 KB Output is correct
9 Correct 2 ms 2652 KB Output is correct
10 Correct 2 ms 2652 KB Output is correct
11 Correct 2 ms 2652 KB Output is correct
12 Correct 2 ms 2648 KB Output is correct
13 Correct 3 ms 2652 KB Output is correct
14 Correct 3 ms 2648 KB Output is correct
15 Correct 3 ms 2652 KB Output is correct
16 Correct 3 ms 2652 KB Output is correct
17 Correct 3 ms 2824 KB Output is correct
18 Correct 2 ms 2652 KB Output is correct
19 Correct 2832 ms 3320 KB Output is correct
20 Correct 2844 ms 3292 KB Output is correct
21 Correct 2730 ms 3320 KB Output is correct
22 Correct 2223 ms 3040 KB Output is correct
23 Execution timed out 5011 ms 4188 KB Time limit exceeded
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2648 KB Output is correct
2 Correct 2 ms 2648 KB Output is correct
3 Correct 7 ms 2828 KB Output is correct
4 Correct 65 ms 3008 KB Output is correct
5 Correct 325 ms 3920 KB Output is correct
6 Correct 1 ms 2652 KB Output is correct
7 Correct 5 ms 2928 KB Output is correct
8 Correct 46 ms 2812 KB Output is correct
9 Correct 412 ms 2924 KB Output is correct
10 Correct 4144 ms 3164 KB Output is correct
11 Execution timed out 5041 ms 3276 KB Time limit exceeded
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 510 ms 3028 KB Output is correct
2 Execution timed out 5034 ms 3156 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 5020 ms 24216 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2648 KB Output is correct
2 Correct 2 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2652 KB Output is correct
7 Correct 2 ms 2652 KB Output is correct
8 Correct 2 ms 2652 KB Output is correct
9 Correct 2 ms 2652 KB Output is correct
10 Correct 2 ms 2652 KB Output is correct
11 Correct 2 ms 2652 KB Output is correct
12 Correct 2 ms 2648 KB Output is correct
13 Correct 3 ms 2652 KB Output is correct
14 Correct 3 ms 2648 KB Output is correct
15 Correct 3 ms 2652 KB Output is correct
16 Correct 3 ms 2652 KB Output is correct
17 Correct 3 ms 2824 KB Output is correct
18 Correct 2 ms 2652 KB Output is correct
19 Correct 2832 ms 3320 KB Output is correct
20 Correct 2844 ms 3292 KB Output is correct
21 Correct 2730 ms 3320 KB Output is correct
22 Correct 2223 ms 3040 KB Output is correct
23 Execution timed out 5011 ms 4188 KB Time limit exceeded
24 Halted 0 ms 0 KB -