QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#304012#8011. Instituteucup-team1453#WA 7ms36296kbC++141.9kb2024-01-13 11:22:322024-01-13 11:22:33

Judging History

你现在查看的是最新测评结果

  • [2024-01-13 11:22:33]
  • 评测
  • 测评结果:WA
  • 用时:7ms
  • 内存:36296kb
  • [2024-01-13 11:22:32]
  • 提交

answer

#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long
#define sz(a) ((int) (a).size())
#define vi vector < int >
#define me(a, x) memset(a, x, sizeof(a))
#define ull unsigned long long
#define ld __float128
#define pb emplace_back
using namespace std;
const int N = 1e6 + 7;
int n, m;
int vis[N], low[N], dfn[N], cnt, bh[N], top, stk[N], idt;
int ehd[N], ev[N], enx[N], eid;
void eadd(int u, int v) {
	++eid, ev[eid] = v, enx[eid] = ehd[u], ehd[u] = eid;
}


vector < vi > nsame;
void dfs(int x) {
	low[x] = dfn[x] = ++idt, stk[++top] = x, vis[x] = 1;
	for(int i = ehd[x]; i; i = enx[i]) {
		if(!dfn[ev[i]]) dfn[ev[i]] = dfn[x] + 1, dfs(ev[i]);
		if(vis[ev[i]]) low[x] = min(low[x], low[ev[i]]);
	}
	if(dfn[x] == low[x]) {
		++cnt;
		vi qwq;
		for(int u = 0; u != x; ) 
			u = stk[top], bh[u] = cnt, vis[u] = 0, --top, qwq.emplace_back(u);
		nsame.emplace_back(qwq); 
	}
}

void clear() {
	eid = 0, cnt = 0, idt = 0;
	L(i, 1, n) ehd[i] = 0, low[i] = dfn[i] = vis[i] = bh[i] = 0;
}

vector < pair < int, int > > e[N];
int nvis[N];
void solve1() {
	queue < int > q;
	q.push(1);
	nvis[1] = 1;
	while(!q.empty()) {
		int u = q.front();
		q.pop();
		for(auto&v : e[u]) {
			if(!vis[v.first]) {
				vis[v.first] = 1;
				q.push(v.first);
			}
		}
	}
}
int main() {
	ios :: sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n >> m;
	vector < pair < int, int > > vp;
	L(i, 1, m) {
		int u, v, t;
		cin >> u >> v >> t;
		e[u].pb(v, t);
		if(t == 2)vp.pb(u, v), eadd(u, v);
	}
	L(i, 1, n) if(!dfn[i]) dfs(i);
	L(i, 1, n) vis[i] = 0;
	solve1();
	for(auto&s : vp) {
		if(vis[s.first] && vis[s.second] && bh[s.first] != bh[s.second]) {
//			cout << s.first << ' ' << s.second << endl;
			cout << "Yes\n";
			return 0;
		}
	}
	cout << "No\n";
	return 0;
} 

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 36268kb

input:

3 4
1 2 1
2 3 2
3 2 1
3 1 2

output:

Yes

result:

ok answer is YES

Test #2:

score: 0
Accepted
time: 7ms
memory: 36296kb

input:

6 8
1 2 1
2 3 2
3 2 2
3 4 1
4 1 2
1 5 2
5 4 2
6 1 2

output:

No

result:

ok answer is NO

Test #3:

score: -100
Wrong Answer
time: 3ms
memory: 34604kb

input:

1000 1000
141 466 1
634 659 1
179 96 2
445 344 2
993 974 1
310 114 2
32 333 1
758 832 1
834 1 1
874 825 2
480 61 2
765 100 2
804 616 1
496 545 1
786 261 2
899 263 1
962 237 2
766 807 1
561 583 1
35 425 1
201 291 1
6 142 1
61 386 2
785 861 2
386 986 2
288 769 2
850 209 1
660 259 2
258 143 2
646 715 2...

output:

No

result:

wrong answer expected YES, found NO