답안 #878580

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
878580 2023-11-24T20:10:51 Z MasterTaster Paths (BOI18_paths) C++14
70 / 100
561 ms 124068 KB
#include <iostream>
#include <vector>

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

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[u][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;

            }
        }
    }
    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:67:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |         for (int i=0; i<boje.size(); i++)
      |                       ~^~~~~~~~~~~~
paths.cpp:69:28: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |             for (int j=0; j<boje.size(); j++)
      |                           ~^~~~~~~~~~~~
paths.cpp:73:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |                 for (int k=0; k<boje.size(); k++) { if (k!=i && k!=j) { if (c3==-1) c3=boje[k]; else c4=boje[k]; } }
      |                               ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 11100 KB Output is correct
2 Correct 3 ms 10844 KB Output is correct
3 Correct 2 ms 10844 KB Output is correct
4 Correct 3 ms 10844 KB Output is correct
5 Correct 2 ms 10844 KB Output is correct
6 Correct 3 ms 10844 KB Output is correct
7 Correct 2 ms 10844 KB Output is correct
8 Correct 3 ms 10844 KB Output is correct
9 Correct 2 ms 10844 KB Output is correct
10 Correct 2 ms 10840 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 176 ms 21844 KB Output is correct
2 Correct 165 ms 21508 KB Output is correct
3 Correct 524 ms 121656 KB Output is correct
4 Correct 195 ms 29996 KB Output is correct
5 Correct 172 ms 24068 KB Output is correct
6 Correct 415 ms 89380 KB Output is correct
7 Correct 561 ms 120548 KB Output is correct
8 Correct 531 ms 121052 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 11100 KB Output is correct
2 Correct 3 ms 10844 KB Output is correct
3 Correct 2 ms 10844 KB Output is correct
4 Correct 3 ms 10844 KB Output is correct
5 Correct 2 ms 10844 KB Output is correct
6 Correct 3 ms 10844 KB Output is correct
7 Correct 2 ms 10844 KB Output is correct
8 Correct 3 ms 10844 KB Output is correct
9 Correct 2 ms 10844 KB Output is correct
10 Correct 2 ms 10840 KB Output is correct
11 Correct 176 ms 21844 KB Output is correct
12 Correct 165 ms 21508 KB Output is correct
13 Correct 524 ms 121656 KB Output is correct
14 Correct 195 ms 29996 KB Output is correct
15 Correct 172 ms 24068 KB Output is correct
16 Correct 415 ms 89380 KB Output is correct
17 Correct 561 ms 120548 KB Output is correct
18 Correct 531 ms 121052 KB Output is correct
19 Correct 201 ms 22376 KB Output is correct
20 Correct 164 ms 19888 KB Output is correct
21 Correct 513 ms 121268 KB Output is correct
22 Correct 203 ms 31516 KB Output is correct
23 Correct 169 ms 24608 KB Output is correct
24 Correct 392 ms 90260 KB Output is correct
25 Correct 545 ms 121784 KB Output is correct
26 Correct 559 ms 124068 KB Output is correct
27 Correct 155 ms 22476 KB Output is correct
28 Correct 188 ms 22952 KB Output is correct
29 Correct 542 ms 122468 KB Output is correct
30 Correct 398 ms 70108 KB Output is correct
31 Correct 400 ms 71296 KB Output is correct
32 Correct 536 ms 120732 KB Output is correct
33 Correct 3 ms 10840 KB Output is correct
34 Correct 2 ms 11004 KB Output is correct
35 Correct 2 ms 10844 KB Output is correct
36 Correct 2 ms 10888 KB Output is correct
37 Correct 3 ms 11096 KB Output is correct
38 Correct 3 ms 11100 KB Output is correct
39 Correct 2 ms 10844 KB Output is correct
40 Correct 2 ms 10844 KB Output is correct
41 Correct 2 ms 10844 KB Output is correct
42 Correct 2 ms 10844 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 10844 KB Output is correct
2 Incorrect 61 ms 13412 KB Output isn't correct
3 Halted 0 ms 0 KB -