Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
59465 | 张弛 | 2020 NK-S3-T2 | C++ | 运行出错 | 5 | 1000 MS | 136584 KB | 1302 | 2022-10-12 17:16:29 |
#include<bits/stdc++.h> using namespace std; const int N = 5e5 + 10; int e[N] , ne[N] , h[N] , w[N] , idx , c[N]; bool st[N]; int n , m , q , x, opt; int M = 1; inline void add(int u , int v , int k){ e[idx] = v , ne[idx] = h[u] , w[idx] = k , h[u] = idx++; } void dfs(int fa , int u , int r){ st[c[u]] = true; for(int i = h[u] ; i != -1 ; i = ne[i]){ if(w[i] > r) continue; else{ int j = e[i]; if(j == fa) continue; dfs(u , j , r); } } } int main(){ int last = 0; // freopen("B.in" , "r" , stdin); // freopen("B.out" , "w" , stdout); memset(h , -1 , sizeof h); scanf("%d%d%d%d%d" , &n , &m , &q , &x , &opt); if(opt) scanf("%d" , &M); for(int i = 1 ; i <= n ; i++) scanf("%d" , &c[i]); int u , v , k; for(int i = 1 ; i <= m ; i++) scanf("%d%d%d" , &u , &v , &k) , add(v , u , k) , add(u , v , k); for(int i = 1 ; i <= q ; i++){ int li , ri; scanf("%d%d" , &li , &ri); if(opt){ li = (li ^ last) % M + 1; ri = (ri ^ last) % M + 1; if(li > ri) swap(li , ri); } int v = 0; for(int i = li ; i <= ri ; i++){ dfs(-1 , x , i); for(int i = 1 ; i <= n ; i++) if(st[i]) v++; } last = v; memset(st , 0 , sizeof st); printf("%d\n" , v); } return 0; }