CSES - Datatähti 2024 loppu - Results
Submission details
Task:Peli
Sender:Kemm1706
Submission time:2024-01-20 16:04:47 +0200
Language:C++ (C++11)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.00 s1, 2details
#20.00 s1, 2details
#30.13 s2details
#40.00 s1, 2details
#50.00 s1, 2details
#60.15 s2details
#70.16 s2details
#80.00 s1, 2details
#9--2details
#10--2details

Compiler report

input/code.cpp: In function 'pl bfs(const vvl&, ll, std::vector<std::vector<std::vector<long long int> > >&)':
input/code.cpp:22:17: warning: unused variable 'j' [-Wunused-variable]
   22 |     ll i, node, j;
      |                 ^
input/code.cpp:74:1: warning: no return statement in function returning non-void [-Wreturn-type]
   74 | }
      | ^

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector <ll> vl;
typedef vector <vl> vvl;
typedef pair <ll, ll> pl;
typedef vector <pl> vpl;
typedef vector <bool> vb;

const ll inf = 1e18;
const ll mod = 1e9 + 7;
const ll nmax = 1e6;

#define fi first
#define se second
#define mp make_pair
#define pb push_back

pl bfs(const vvl &g, ll n, vector <vvl> &m)
{
    vl parent(n + 1, 0);
    ll i, node, j;

    queue <ll> q;
    q.push(1);
    for(i = 1; i <= n; i++)
        m[0][i][i] = 0;

    while(!q.empty())
    {
        node = q.front();
        q.pop();
        for(auto x : g[node])
        {
            if(x != parent[node])
            {
                bool change = false;
                parent[x] = node;
                for(i = 1; i <= n; i++)
                {
                    if(m[0][node][i] != inf && m[1][x][i] > m[0][node][i] + 1)
                    {
                        m[1][x][i] = m[0][node][i] + 1;
                        change = true;
                    }
                    if(m[1][node][i] != inf && m[0][x][i] > m[1][node][i] + 1)
                    {
                        m[0][x][i] = m[1][node][i] + 1;
                        change = true;
                    }
                }
                if(change)
                    q.push(x);
            }
        }
    }

    /*for(ll i = 1; i <= n; i++)
    {
        cerr << i << ": ";
        for(ll j = 1; j <= n; j++)
            cerr << m[0][i][j] << " ";
        cerr << "\n";
    }
    cerr << "\n";
    for(ll i = 1; i <= n; i++)
    {
        cerr << i << ": ";
        for(ll j = 1; j <= n; j++)
            cerr << m[1][i][j] << " ";
        cerr << "\n";
    }*/

}

/*4 5 6
1 2
2 3
1 3
2 4
3 4
1 2 2
1 4 1
1 4 5
2 2 1
2 2 2
3 4 8*/

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    ll n, t, q, i, a, b, k;
    pl ans;
    cin >> n >> t >> q;
    vvl g(n + 1);
    vpl minn(n + 1, {inf, inf});
    vector <vvl> m(2, vvl(n + 1, vl(n + 1, inf)));

    for(i = 0; i < t; i++)
    {
        cin >> a >> b;
        g[a].pb(b);
        g[b].pb(a);
    }

    bfs(g, n, m);

    while(q--)
    {
        cin >> a >> b >> k;
        if(k % 2 == 0)
            if(m[0][a][b] <= k)
                cout << "YES\n";
            else
                cout << "NO\n";
        else
            if(m[1][a][b] <= k)
                cout << "YES\n";
            else
                cout << "NO\n";
    }

    return 0;
}

Test details

Test 1

Group: 1, 2

Verdict:

input
2 1 100
1 2
1 1 0
1 2 0
2 1 0
...

correct output
YES
NO
NO
YES
NO
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 2

Group: 1, 2

Verdict:

input
50 49 100
33 34
7 8
49 50
47 48
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 3

Group: 2

Verdict:

input
2500 2499 100000
821 822
2351 2352
752 753
832 833
...

correct output
NO
YES
YES
NO
NO
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 4

Group: 1, 2

Verdict:

input
12 12 100
9 10
2 3
1 12
1 2
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 5

Group: 1, 2

Verdict:

input
11 11 100
10 11
7 8
1 2
5 6
...

correct output
YES
YES
YES
YES
YES
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 6

Group: 2

Verdict:

input
2500 2500 100000
1936 1937
1884 1885
751 752
831 832
...

correct output
NO
YES
YES
NO
NO
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 7

Group: 2

Verdict:

input
2499 2499 100000
821 822
2351 2352
752 753
832 833
...

correct output
YES
YES
YES
YES
YES
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 8

Group: 1, 2

Verdict:

input
50 99 100
40 47
34 50
44 47
15 16
...

correct output
YES
YES
YES
YES
YES
...

user output
(empty)

Error:
free(): double free detected in tcache 2

Test 9

Group: 2

Verdict:

input
2500 4999 100000
1191 2361
251 399
1026 2300
82 1655
...

correct output
YES
YES
YES
YES
YES
...

user output
(empty)

Test 10

Group: 2

Verdict:

input
2500 4999 100000
2023 2218
23 51
1020 1272
11 114
...

correct output
YES
YES
YES
YES
YES
...

user output
(empty)