QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#782931#6679. Not Another Path Query ProblemxixuTL 187ms6312kbC++232.7kb2024-11-25 22:15:272024-11-25 22:15:28

Judging History

This is the latest submission verdict.

  • [2024-11-25 22:15:28]
  • Judged
  • Verdict: TL
  • Time: 187ms
  • Memory: 6312kb
  • [2024-11-25 22:15:27]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
// #define int __int128
#define re read()
#define pr(x) print(x)
#define fup(a, b, c, d) for(int a = (b); a <= (c); a += (d))
#define fdo(a, b, c, d) for(int a = (b); a >= (c); a -= (d))
typedef long long ll;
typedef pair<int , int> PII;
typedef map<int , int> MII;
const int inf = 0x3f3f3f3f, N = 2e6 + 10, M = 4e5 + 10, mod = 1e9 + 7;
const ll INF = 0x3f3f3f3f3f3f3f3f;

__int128 read()
{
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}

void print(__int128 x)
{
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}

int p[N];
int find(int x)//返回x的祖宗节点
{
	if(p[x] != x) return find(p[x]);
    return x;
}

int n, m, q, V;
vector<PII> ve;
struct edge
{
    int u, v, w;
};
vector<edge> ed;
bool st[N];

void solve()
{
    cin >> n >> m >> q >> V;

    fup(i, 1, m, 1) {
        int u, v, w;
        cin >> u >> v >> w;
        ed.push_back({u, v, w});
    }

    fup(i, 1, q, 1) {
        int u, v;
        cin >> u >> v;
        ve.push_back({u, v});
    }

    fdo(i, 60, 0, 1) {
        if((V >> i) & 1) continue ;

        fup(j, 1, n, 1) p[j] = j;

        int res = ((V >> i) + 1) << i;

        for(auto x : ed) {
            int u, v, w;
            u = x.u, v = x.v, w = x.w;
            if((res & w) != res) continue ;

            u = find(u), v = find(v);
            if(u != v) {
                p[u] = v;
            }
        }

        fup(j, 0, q - 1, 1) {
            int u, v;
            u = ve[j].first, v = ve[j].second;
            u = find(u), v = find(v);
            if(u == v) {
                st[j] = true;
            }
        }
    }

    fup(j, 1, n, 1) p[j] = j;

    int res = V;

    for(auto x : ed) {
        int u, v, w;
        u = x.u, v = x.v, w = x.w;
        if((res & w) != res) continue ;

        u = find(u), v = find(v);
        if(u != v) {
            p[u] = v;
        }
    }

    fup(j, 0, q - 1, 1) {
        int u, v;
        u = ve[j].first, v = ve[j].second;
        u = find(u), v = find(v);
        if(u == v) {
            st[j] = true;
        }
    }

    fup(j, 0, q - 1, 1) {
        if(st[j]) cout << "Yes\n";
        else cout << "No\n";
    }
    
}

signed main()
{
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(false);

    int _ = 1;
    // cin >> _;
    while(_ --)
    {
        solve();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5760kb

input:

9 8 4 5
1 2 8
1 3 7
2 4 1
3 4 14
2 5 9
4 5 7
5 6 6
3 7 15
1 6
2 7
7 6
1 8

output:

Yes
No
Yes
No

result:

ok 4 token(s): yes count is 2, no count is 2

Test #2:

score: 0
Accepted
time: 1ms
memory: 5716kb

input:

3 4 1 4
1 2 3
1 2 5
2 3 2
2 3 6
1 3

output:

Yes

result:

ok YES

Test #3:

score: 0
Accepted
time: 172ms
memory: 6284kb

input:

100 2000 50000 0
32 52 69658009083393280
26 38 868250171554967916
87 32 743903879320440454
22 15 19782587273744714
57 98 845866434191429143
42 95 1145336983294966993
67 40 1036117659380117375
46 24 265457274847122243
63 44 438254608190938148
28 23 992625102587165494
57 87 558124114385470345
6 17 535...

output:

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
...

result:

ok 50000 token(s): yes count is 50000, no count is 0

Test #4:

score: 0
Accepted
time: 187ms
memory: 6288kb

input:

100 2000 50000 0
6 10 1152921503398360575
70 50 1147995692480249852
85 50 1152921500294021032
74 27 1078952220075835391
12 7 1152840139402113023
94 18 246566425809715199
15 3 1152859588138927091
13 17 1152921504302759415
95 30 70321567232249231
76 40 576455254460071931
83 33 825457230579891955
36 71...

output:

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
...

result:

ok 50000 token(s): yes count is 50000, no count is 0

Test #5:

score: 0
Accepted
time: 159ms
memory: 6312kb

input:

100 2000 50000 0
32 30 1152921504602652671
8 85 1152914907537080319
19 74 1152921504605667327
62 100 1151795604687421439
87 32 1079738010662076415
57 76 1152921504606842879
70 8 1152921504606846975
95 41 1152921504069976059
88 41 1152903912420769791
74 50 1152499292141256703
71 47 576460752295034879...

output:

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
...

result:

ok 50000 token(s): yes count is 50000, no count is 0

Test #6:

score: 0
Accepted
time: 187ms
memory: 4292kb

input:

100 2000 50000 0
6 83 1152921504606846975
41 67 1152771969951725565
66 18 1152917101527171071
42 100 1152921504606846975
42 36 1152885220186128383
68 6 1062849510985693150
63 37 11607128887709333
77 94 195895037245918453
12 66 1152921504606846975
43 68 801313368834621047
16 15 864549566333059007
67 ...

output:

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
...

result:

ok 50000 token(s): yes count is 50000, no count is 0

Test #7:

score: -100
Time Limit Exceeded

input:

100000 500000 500000 0
57409 92310 855506197841388351
48893 50956 635095737920170434
60473 38646 356425024348070344
24975 49205 1002259844174974454
64205 19718 1007224495019887036
89453 80562 805646901543302037
37980 78408 130784586947510355
87951 78976 521293221248312596
76010 60701 100242203282273...

output:


result: