Untitled
public
May 31, 2025
Never
29
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 }