Submission #716410

#TimeUsernameProblemLanguageResultExecution timeMemory
716410ajab_01Paths (BOI18_paths)C++17
43 / 100
3070 ms27716 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int N = 3e5 + 5; vector<pair<int , int> > edge; vector<int> g[N]; int C[N] , n , m , k; int ans; void cal2(){ for(auto i : edge){ int u = i.first , v = i.second; if(C[u] != C[v]) ans++; } } void cal3(){ for(int i = 1 ; i <= n ; i++){ int cnt[6]; memset(cnt , 0 , sizeof(cnt)); for(int j : g[i]){ if(C[j] == C[i]) continue; cnt[C[j]]++; } for(int i = 1 ; i <= 5 ; i++) for(int j = i + 1 ; j <= 5 ; j++) ans += cnt[i] * cnt[j]; } } void cal4(){ for(auto i : edge){ int u = i.first , v = i.second; if(C[u] == C[v]) continue; int cnt1[6] , mx = 0; memset(cnt1 , 0 , sizeof(cnt1)); for(int j : g[u]){ if(C[j] == C[u] || C[j] == C[v]) continue; cnt1[C[j]]++; } int cnt2[6]; memset(cnt2 , 0 , sizeof(cnt2)); for(int j : g[v]){ if(C[j] == C[u] || C[j] == C[v]) continue; cnt2[C[j]]++; } for(int i = 1 ; i <= 5 ; i++){ for(int j = i + 1 ; j <= 5 ; j++){ ans += cnt1[i] * cnt2[j]; ans += cnt1[j] * cnt2[i]; } } } } int32_t main(){ ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin >> n >> m >> k; for(int i = 1 ; i <= n ; i++) cin >> C[i]; for(int i = 1 ; i <= m ; i++){ int u , v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); edge.push_back({u , v}); } if(k == 1){ cout << ans * 2 << '\n'; return 0; } cal2(); if(k == 2){ cout << ans * 2 << '\n'; return 0; } cal3(); if(k == 3){ cout << ans * 2 << '\n'; return 0; } cal4(); if(k == 4){ cout << ans * 2 << '\n'; return 0; } // cal5(); // cout << ans * 2 << '\n'; return 0; }

Compilation message (stderr)

paths.cpp: In function 'void cal4()':
paths.cpp:38:17: warning: unused variable 'mx' [-Wunused-variable]
   38 |   int cnt1[6] , mx = 0;
      |                 ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...