제출 #1135186

#제출 시각아이디문제언어결과실행 시간메모리
1135186emptypringlescanKOVANICE (COI15_kovanice)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
int par[300005];
vector<int> adj[2][300005];
int val[2][300005];
int n,m,v;
int find(int x){
	if(par[x]==x) return x;
	return par[x]=find(par[x]);
}
void merge(int x, int y){
	x=find(x); y=find(y);
	par[x]=y;
}
void forward(int x){
	if(val[0][x]) return val[0][x];
	val[0][x]=n;
	for(int i:adj[0][x]){
		forward(i);
		val[0][x]=min(val[0][x],val[0][i]-1);
	}
}
void backward(int x){
	if(val[1][x]) return val[1][x];
	val[1][x]=1;
	for(int i:adj[1][x]){
		backward(i);
		val[1][x]=max(val[1][x],val[1][i]+1);
	}
}

int32_t main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin >> n >> m >> v;
	vector<pair<int,int> > ed;
	for(int i=0; i<=m; i++) par[i]=i;
	for(int i=0; i<v; i++){
		int a,b;
		char c;
		cin >> a >> c >> b;
		if(c=='='){
			merge(a,b);
			continue;
		}
		else if(c=='>') swap(a,b);
		ed.push_back({a,b});
	}
	for(auto [a,b]:ed){
		a=find(a); b=find(b);
		adj[0][a].push_back(b);
		adj[1][b].push_back(a);
	}
	for(int i=1; i<=m; i++){
		if(!val[0][find(i)]) forward(find(i));
		if(!val[1][find(i)]) backward(find(i));
	}
	for(int i=1; i<=m; i++){
		if(val[0][find(i)]==val[1][find(i)]){
			cout << 'K' << val[0][find(i)] << '\n';
		}
		else cout << "?\n";
	}
}

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

kovanice.cpp: In function 'void forward(int)':
kovanice.cpp:16:38: error: return-statement with a value, in function returning 'void' [-fpermissive]
   16 |         if(val[0][x]) return val[0][x];
      |                              ~~~~~~~~^
kovanice.cpp: In function 'void backward(int)':
kovanice.cpp:24:38: error: return-statement with a value, in function returning 'void' [-fpermissive]
   24 |         if(val[1][x]) return val[1][x];
      |                              ~~~~~~~~^