제출 #864401

#제출 시각아이디문제언어결과실행 시간메모리
864401iskhakkutbilimPaths (BOI18_paths)C++17
100 / 100
276 ms95832 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ff first #define ss second #define all(a) a.begin(), a.end() const int N = 3e5; int n, m, col[N+1]; vector<int> g[N+1]; int ans; int dp[N + 1][1<<5]; main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int k; cin >> n >> m >> k; for(int i = 0;i < n; i++){ cin >> col[i]; col[i]--; } for(int i = 0;i < m; i++){ int a, b; cin >> a >> b; a--, b--; g[a].push_back(b); g[b].push_back(a); } for(int i = 0;i < n; i++){ dp[i][(1<<col[i])] = 1; } for(int mask = 0; mask < (1<<k); mask++){ for(int v = 0; v < n; v++){ if(!dp[v][mask]) continue; for(int to : g[v]){ if(mask & (1<<col[to])) continue; dp[to][mask | (1<<col[to])]+= dp[v][mask]; } } } for(int mask = 0; mask < (1<<k); mask++){ if(__builtin_popcount(mask) < 2) continue; for(int i = 0;i < n; i++){ ans+= dp[i][mask]; } } cout << ans; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

paths.cpp:15:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   15 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...