제출 #836532

#제출 시각아이디문제언어결과실행 시간메모리
836532ma_moutahid열쇠 (IOI21_keys)C++17
0 / 100
3066 ms212 KiB
#include <vector>
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define vii vector<vi>
#define pi pair<int,int>
#define vp vector<pi>

vector<vp> g;

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();
	g.resize(n);
	int m=u.size();
	for(int i=0;i<m;i++){
		g[u[i]].push_back(make_pair(c[i],v[i]));
		g[v[i]].push_back(make_pair(c[i],u[i]));
	}
	vi result(n);
	for(int root=0;root<n;root++){
		vi traversed(n);
		traversed[root]=1;
		set<int>keys;
		keys.insert(r[root]);
		int nk=1;
		multimap<int,int>bridges;
		for(pi p:g[root]){
			if(traversed[p.second])continue;
			bridges.insert(p);
		}
		while(nk){
			for(int key:keys){
				auto itr=bridges.find(key);
				while(itr!=bridges.end()){
					if(!traversed[itr->second]){
						traversed[itr->second]=true;
						int old=keys.size();
						keys.insert(r[itr->second]);
						if(old!=keys.size())nk++;
						result[root]++;
						for(pi p:g[itr->second]){
							if(traversed[p.second])continue;
							bridges.insert(p);
						}
					}
					bridges.erase(itr);
					itr=bridges.find(key);
				}

			}
		}

	}
	int mn=*min_element(result.begin(),result.end());
	for(int i=0;i<n;i++){
		result[i]=(result[i]==mn);
	}

	

	return result;
}

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

keys.cpp: In function 'std::vector<int> find_reachable(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
keys.cpp:40:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::set<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |       if(old!=keys.size())nk++;
      |          ~~~^~~~~~~~~~~~~
#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...