Submission #878587

# Submission time Handle Problem Language Result Execution time Memory
878587 2023-11-24T20:22:16 Z MasterTaster Paths (BOI18_paths) C++14
70 / 100
559 ms 193516 KB
#include <bits/stdc++.h>

#define ll long long
#define pii pair<int, int>
#define xx first
#define yy second
#define pb push_back
#define MAXN 300010
#define MAXK 8

using namespace std;

int n, m, k, a[MAXN];
ll cnt[MAXN][MAXK], ress, cntt[MAXN][MAXK][MAXK];
vector<pii> grane;
vector<int> g[MAXN];

int main() {
    cin>>n>>m>>k;

    for (int i=1; i<=n; i++)
        cin>>a[i];

    for (int i=0; i<m; i++)
    {
        int u, v; cin>>u>>v;
        grane.pb({u, v});
        g[u].pb(v); g[v].pb(u);
        cnt[u][a[v]]++;
        cnt[v][a[u]]++;
    }

    for (auto par:grane)
    {
        int u=par.xx, v=par.yy;
        if (a[u]==a[v]) continue;
        ress+=2;
        vector<int> boje;
        for (int i=1; i<=5; i++) if (a[u]!=i && a[v]!=i) boje.pb(i);
        int c1, c2, c3;
        c1=boje[0]; c2=boje[1]; c3=boje[2];
        ress+=2*((cnt[u][c1]*cnt[v][c2])+(cnt[u][c2]*cnt[v][c1]) + (cnt[u][c1]*cnt[v][c3])+(cnt[u][c3]*cnt[v][c1]) + (cnt[u][c3]*cnt[v][c2])+(cnt[u][c2]*cnt[v][c3]))
                +cnt[u][c1]+cnt[u][c2]+cnt[u][c3]+cnt[v][c1]+cnt[v][c2]+cnt[v][c3];
        //cout<<u<<" "<<v<<" "<<ress<<endl;
    }

    for (int u=1; u<=n; u++)
    {
        for (auto v:g[u])
        {
            if (a[u]==a[v]) continue;
            vector<int> boje;
            for (int i=1; i<=5; i++)
                if (a[u]!=i && a[v]!=i) boje.pb(i);
            for (auto c:boje)
                cntt[u][a[v]][c]+=cnt[v][c];
        }
    }

    ll press=0;
    for (int u=1; u<=n; u++)
    {
        vector<int> boje;
        for (int i=1; i<=5; i++) if (a[u]!=i) boje.pb(i);

        for (int i=0; i<boje.size(); i++)
        {
            for (int j=0; j<boje.size(); j++)
            {
                if (i==j) continue;
                int c1=boje[i], c2=boje[j], c3=-1, c4=-1;
                for (int k=0; k<boje.size(); k++) { if (k!=i && k!=j) { if (c3==-1) c3=boje[k]; else c4=boje[k]; } }
                press+=(cntt[u][c1][c2]*cntt[u][c3][c4]+cntt[u][c1][c2]*cntt[u][c4][c3]);
                //cout<<u<<" "<<" "<<c1<<" "<<c2<<" "<<c3<<" "<<c4<<": "<<press<<endl;

            }
        }
    }
    if (press%2==1) assert(0);
    press/=2;
    ress+=press;
    //cout<<press<<endl;
    cout<<ress;
}
/*
8 7 5
1 2 3 1 4 5 5 4
1 2
2 3
3 4
2 5
5 6
2 7
7 8
 */

Compilation message

paths.cpp: In function 'int main()':
paths.cpp:66:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |         for (int i=0; i<boje.size(); i++)
      |                       ~^~~~~~~~~~~~
paths.cpp:68:28: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |             for (int j=0; j<boje.size(); j++)
      |                           ~^~~~~~~~~~~~
paths.cpp:72:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |                 for (int k=0; k<boje.size(); k++) { if (k!=i && k!=j) { if (c3==-1) c3=boje[k]; else c4=boje[k]; } }
      |                               ~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12892 KB Output is correct
2 Correct 2 ms 12892 KB Output is correct
3 Correct 2 ms 12892 KB Output is correct
4 Correct 2 ms 12892 KB Output is correct
5 Correct 2 ms 12892 KB Output is correct
6 Correct 2 ms 12892 KB Output is correct
7 Correct 3 ms 12888 KB Output is correct
8 Correct 3 ms 12892 KB Output is correct
9 Correct 2 ms 12892 KB Output is correct
10 Correct 2 ms 12892 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 162 ms 23504 KB Output is correct
2 Correct 143 ms 22556 KB Output is correct
3 Correct 541 ms 192604 KB Output is correct
4 Correct 247 ms 38104 KB Output is correct
5 Correct 170 ms 26288 KB Output is correct
6 Correct 376 ms 137460 KB Output is correct
7 Correct 531 ms 191176 KB Output is correct
8 Correct 532 ms 193208 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12892 KB Output is correct
2 Correct 2 ms 12892 KB Output is correct
3 Correct 2 ms 12892 KB Output is correct
4 Correct 2 ms 12892 KB Output is correct
5 Correct 2 ms 12892 KB Output is correct
6 Correct 2 ms 12892 KB Output is correct
7 Correct 3 ms 12888 KB Output is correct
8 Correct 3 ms 12892 KB Output is correct
9 Correct 2 ms 12892 KB Output is correct
10 Correct 2 ms 12892 KB Output is correct
11 Correct 162 ms 23504 KB Output is correct
12 Correct 143 ms 22556 KB Output is correct
13 Correct 541 ms 192604 KB Output is correct
14 Correct 247 ms 38104 KB Output is correct
15 Correct 170 ms 26288 KB Output is correct
16 Correct 376 ms 137460 KB Output is correct
17 Correct 531 ms 191176 KB Output is correct
18 Correct 532 ms 193208 KB Output is correct
19 Correct 163 ms 24244 KB Output is correct
20 Correct 145 ms 23232 KB Output is correct
21 Correct 523 ms 192080 KB Output is correct
22 Correct 194 ms 40628 KB Output is correct
23 Correct 186 ms 27688 KB Output is correct
24 Correct 398 ms 138748 KB Output is correct
25 Correct 541 ms 192788 KB Output is correct
26 Correct 559 ms 193020 KB Output is correct
27 Correct 155 ms 23228 KB Output is correct
28 Correct 188 ms 27568 KB Output is correct
29 Correct 554 ms 193376 KB Output is correct
30 Correct 388 ms 109388 KB Output is correct
31 Correct 376 ms 109448 KB Output is correct
32 Correct 529 ms 193516 KB Output is correct
33 Correct 3 ms 12892 KB Output is correct
34 Correct 2 ms 12892 KB Output is correct
35 Correct 2 ms 12892 KB Output is correct
36 Correct 2 ms 12892 KB Output is correct
37 Correct 2 ms 12892 KB Output is correct
38 Correct 3 ms 12892 KB Output is correct
39 Correct 2 ms 12888 KB Output is correct
40 Correct 3 ms 12892 KB Output is correct
41 Correct 2 ms 12892 KB Output is correct
42 Correct 2 ms 12892 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12892 KB Output is correct
2 Incorrect 60 ms 15604 KB Output isn't correct
3 Halted 0 ms 0 KB -