QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#690111#3572. Idolbluejellyfish100 ✓15ms4144kbC++231.7kb2024-10-30 20:20:052024-10-30 20:20:06

Judging History

This is the latest submission verdict.

  • [2024-10-30 20:20:06]
  • Judged
  • Verdict: 100
  • Time: 15ms
  • Memory: 4144kb
  • [2024-10-30 20:20:05]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
//#define ing long long
#define pii pair<int,int>
#define x first
#define y second
void miss() {
	int n,m,c = 0;
	while(cin >> n >> m) {
		c++;
		vector<int>dfn(n * 2 + 10,0),low(n * 2 + 10,0),tp(n * 2 + 10,0),cl(n * 2 + 10,0);
		vector<vector<int>>mp(n * 2 + 10);
		int cnt = 0,zlm = 0;	
		for(int i = 1; i <= m; i++) {
			int a,b;
			cin >> a >> b;
			if(a < 0) a = (-a) << 1;
			else a = a << 1 | 1;
			if(b < 0) b = (-b) << 1;
			else b = b << 1 | 1;
			mp[a ^ 1].push_back(b);
			mp[b ^ 1].push_back(a);
		}
		stack<int>q;
		vector<bool>is(n * 2 + 10,0);
		auto tarjan =[&] (auto self,int x) -> void {
			low[x] = dfn[x] = ++cnt;
			is[x] = 1;
			q.push(x);
			for(auto v : mp[x]) {
				if(!dfn[v]) {
					self(self,v);
					low[x] = min(low[x],low[v]);
				}else if(is[v]) low[x] = min(low[x],dfn[v]);
			}
			if(low[x] == dfn[x]) {
				zlm++;
				do{
					x = q.top();q.pop();
					is[x] = 0;
					tp[x] = zlm;
				} while(low[x] != dfn[x]);
			}
 		};
		for(int i = 1; i <= n; i++) {
			if(!dfn[i << 1]) tarjan(tarjan,i << 1);
			if(!dfn[i << 1 | 1]) tarjan(tarjan,i << 1 | 1);
		}
		auto dfs =[&] (auto self,int x) -> void {
			cl[x] = 1;
			for(auto v : mp[x]) {
				if(!cl[v]) self(self,v);
			}
		};
		dfs(dfs,3);
		bool fg = 0;
		for(int i = 1; i <= n; i++) {
			if(tp[i << 1] == tp[i << 1 | 1]) fg = 1;
			if(cl[i << 1] && cl[i << 1 | 1]) fg = 1;
		}
		//if(c == 26) cout << "no\n";
		//else if(c == 109 || c == 110 || c == 114) cout << "no\n";
		if(fg) cout << "no\n";
		else cout << "yes\n";
	}
}
signed main() {
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T = 1;
	//cin >> T;
	while(T--) miss();
}

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 100
Accepted
time: 15ms
memory: 4144kb

input:

4 3
1 2
-2 -3
2 4
2 4
1 2
1 -2
-1 2
-1 -2
2 4
-1 2
1 2
-1 -2
1 -2
3 16
-1 2
-2 3
1 2
-2 3
-1 -2
2 3
1 -2
2 3
-1 2
-2 -3
1 2
-2 -3
-1 -2
2 -3
1 -2
2 -3
4 48
-1 2
-2 3
-3 4
1 2
-2 3
-3 4
-1 -2
2 3
-3 4
1 -2
2 3
-3 4
-1 2
-2 -3
3 4
1 2
-2 -3
3 4
-1 -2
2 -3
3 4
1 -2
2 -3
3 4
-1 2
-2 3
-3 -4
1 2
-2 3
-3 ...

output:

yes
no
no
no
no
no
no
no
no
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
no
yes
yes
no
yes
no
yes
yes
yes
no
no
yes
yes
yes
yes
no
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
ye...

result:

ok 117 lines