제출 #120441

#제출 시각아이디문제언어결과실행 시간메모리
120441popovicirobert무제 (POI11_smi)C++14
100 / 100
1187 ms129892 KiB
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define lsb(x) (x & (-x)) 

using namespace std;

const int MAXN = (int) 1e5;
const int MAXM = (int) 1e6;

vector < pair <int, int> > g[MAXN + 1];
bool instk[MAXN + 1], vis[MAXM + 1];

vector < vector <int> > sol;
stack <int> stk;

void dfs(int nod) {
	if(instk[nod]) {
		vector <int> cur;
		cur.push_back(nod);
		while(stk.top() != nod) {
			instk[stk.top()] = 0;
			cur.push_back(stk.top());
			instk[stk.top()] = 0;
			stk.pop();
		}
		instk[nod] = 0;
		stk.pop();
		sol.push_back(cur);
	}

	while(g[nod].size()) {
		auto cur = g[nod].back();
		g[nod].pop_back();
		if(vis[cur.second]) 
			continue;
		vis[cur.second] = instk[nod] = 1;
		stk.push(nod);
		dfs(cur.first);
	}
}

int main() {
	//ifstream cin("A.in");
	//ofstream cout("A.out");
	int i, n, m; 
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	
	cin >> n >> m;
	for(i = 1; i <= m; i++) {
		int a, b, c, d;
		cin >> a >> b >> c >> d;
		if(c != d) {
			g[a].push_back({b, i});
			g[b].push_back({a, i});
		}
	}

	for(i = 1; i <= n; i++) {
		if(g[i].size() & 1) {
			cout << "NIE";
			return 0;
		}
	}

	for(i = 1; i <= n; i++) {
		dfs(i);
	}

	cout << sol.size() << "\n";
	for(i = 0; i < sol.size(); i++) {
		cout << sol[i].size() << " ";
		for(auto it : sol[i]) {
			cout << it << " ";
		}
		cout << sol[i][0] << "\n";
	}
	return 0;
}

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

smi.cpp: In function 'int main()':
smi.cpp:72:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i = 0; i < sol.size(); i++) {
             ~~^~~~~~~~~~~~
#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...
#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...