QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#690092#3572. Idolbluejellyfish100 ✓15ms3848kbC++231.7kb2024-10-30 20:14:022024-10-30 20:14:04

Judging History

This is the latest submission verdict.

  • [2024-10-30 20:14:04]
  • Judged
  • Verdict: 100
  • Time: 15ms
  • Memory: 3848kb
  • [2024-10-30 20:14:02]
  • 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].push_back(b ^ 1);
			mp[b].push_back(a ^ 1);
		}
		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";
		else 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();
}

详细


Pretests


Final Tests

Test #1:

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

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