제출 #1220058

#제출 시각아이디문제언어결과실행 시간메모리
1220058akqxolotl열쇠 (IOI21_keys)C++20
37 / 100
3093 ms41692 KiB
#include <vector>
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define debug(x) cerr<<#x<<" is "<<x<<endl;

std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) {
	int n=r.size(),m=u.size();
	vector<int> p[n+1];
	vector<int> o[n];
	for(int i=0;i<m;i++){
		o[c[i]].pb(i);
	}
	//debug(n)debug(m)
	for(int i=0;i<n;i++){
		//debug(i)
		bool vis[n];
		set<int> adj[n];
		memset(vis,0,sizeof(vis));
		queue<int> q;
		set<int> k;
		q.push(i);
		int ans=0;
		while(!q.empty()){
			int t=q.front();
			//debug(t)
			q.pop();
			if(vis[t])continue;
			//debug(t)
			//if(i==0)debug(t)
			vis[t]=1;
			ans++;
			if(k.find(r[t])==k.end()){
				//debug(r[t])
				for(auto j:o[r[t]]){
					//debug(j)
					//if(u[j]>=n||v[j]>=n)debug(u[j])debug(v[j])
					if(adj[u[j]].find(v[j])!=adj[u[j]].end())continue;
					if(adj[v[j]].find(u[j])!=adj[v[j]].end())continue;
					adj[u[j]].insert(v[j]);
					adj[v[j]].insert(u[j]);
					//debug(v[j])debug(u[j])
					if(vis[u[j]]){
						if(!vis[v[j]])q.push(v[j]);
					}else if(vis[v[j]]){
						if(!vis[u[j]])q.push(u[j]);
					}
				}
				k.insert(r[t]);
			}
			for(auto j:adj[t]){
				if(!vis[j])q.push(j);
			}
			//debug(1)
			//debug(i)
		}
		//debug(ans)
		p[ans].pb(i);
	}
	vector<int> af;
	for(int i=0;i<n;i++)af.pb(0);
	for(int i=1;i<=n;i++){
		if(p[i].empty())continue;
		for(auto j:p[i]){
			af[j]=1;
		}
		return af;
	}
}

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

keys.cpp: In function 'std::vector<int> find_reachable(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
keys.cpp:69:1: warning: control reaches end of non-void function [-Wreturn-type]
   69 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...