Submission #864397

#TimeUsernameProblemLanguageResultExecution timeMemory
864397iskhakkutbilimPaths (BOI18_paths)C++17
23 / 100
3050 ms61548 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];
int k;
vector<int> g[N+1][6];
int ans;

int used[N+10], used_c[N+10];
int timer = 1, closed;
void dfs(int v){
	used[v] = timer, used_c[col[v]] = timer;
	ans++;
	if(closed == k){
		used[v] = timer-1, used_c[col[v]] = timer-1, closed--;
		return;
	}
	for(int j = 1;j <= k; j++){
		if(used_c[j] != timer){
			for(int to : g[v][j]){
				if(used[to] != timer){
					closed++;
					dfs(to);
					closed--;
				}
			}
		}
	}
	used[v] = timer-1, used_c[col[v]] = timer-1;
}

main(){
   ios::sync_with_stdio(0);
   cin.tie(0); cout.tie(0);
	cin >> n >> m >> k;
	for(int i = 1;i <= n; i++){
		cin >> col[i];
	}
	for(int i = 0;i < m; i++){
		int a, b; cin >> a >> b;
		g[a][col[b]].push_back(b);
		g[b][col[a]].push_back(a);
	}
	
	
	for(int i = 1;i <= n; i++){
		closed = 1;
		dfs(i);
		ans--;
		timer++;
	}
	
	cout << ans;
	return 0;
}

Compilation message (stderr)

paths.cpp:37:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   37 | 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...