G

Untitled

public
Guest May 31, 2025 Never 29
Clone
C++ paste1.cpp 56 lines (51 loc) | 1.3 KB
1
#include<bits/stdc++.h>
2
3
using namespace std;
4
typedef long long ll;
5
#define sz(s) (int)(s).size()
6
#define all(s) s.begin(),s.end()
7
8
void Speed() {
9
ios_base::sync_with_stdio(false);
10
cin.tie(NULL);
11
}
12
13
void solve(){
14
int n, q; cin >> n >> q;
15
vector<int> b(n);
16
for(auto& it : b) cin >> it;
17
vector<int> L(n + q), R(n + q), x(n + q), y(n + q), z(n + q);
18
vector<int> idx(n);
19
iota(all(idx), 0);
20
for(int i = n; i < n + q; i++){
21
cin >> x[i] >> y[i] >> z[i]; x[i]--; y[i]--; z[i]--;
22
L[i] = idx[x[i]]; R[i] = idx[y[i]];
23
idx[z[i]] = i;
24
}
25
vector<int> lim(n + q, -1);
26
27
for(int i = n + q - 1; i >= n; i--){
28
if(idx[z[i]] == i){
29
lim[i] = b[z[i]];
30
}
31
lim[L[i]] = max(lim[L[i]], lim[i]);
32
lim[R[i]] = max(lim[R[i]], lim[i]);
33
}
34
vector<int> a(n, -1);
35
for(int i = 0; i < n; i++){
36
a[i] = max(lim[i], b[i]);
37
}
38
vector<int> c = a;
39
for(int i = n; i < n + q; i++){
40
c[z[i]] = min(c[x[i]], c[y[i]]);
41
}
42
if(c != b) return cout << "-1\n", void();
43
for(int i = 0; i < n; i++){
44
cout << a[i] << " \n"[i == n - 1];
45
}
46
}
47
48
int main() {
49
Speed();
50
int tc = 1;
51
cin >> tc;
52
while (tc--) {
53
solve();
54
}
55
return 0;
56
}