QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#304569#8011. Instituteucup-team987#WA 6ms22848kbC++202.0kb2024-01-13 21:13:072024-01-13 21:13:08

Judging History

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

  • [2024-01-13 21:13:08]
  • 评测
  • 测评结果:WA
  • 用时:6ms
  • 内存:22848kb
  • [2024-01-13 21:13:07]
  • 提交

answer

#include<iostream>
#include<queue>
#include<cassert>
using namespace std;
//Strongly Connected Components
#include<vector>
struct SCC{
	int n;
	vector<int>comp,order;
	vector<bool>used;
	vector<vector<int> >G,RG;
	SCC(int _n=0):n(_n),comp(_n,-1),used(_n,false),G(_n),RG(_n){}
	void add_edge(int from,int to)
	{
		G[from].push_back(to);
		RG[to].push_back(from);
	}
	void copy(const vector<vector<int> >&H)
	{
		for(int i=0;i<H.size();i++)
		{
			for(int j=0;j<H[i].size();j++)
			{
				G[i].push_back(H[i][j]);
				RG[H[i][j]].push_back(i);
			}
		}
	}
	int operator[](int u)const{return comp[u];}
	void dfs(int u)
	{
		used[u]=true;
		for(int i=0;i<G[u].size();i++)if(!used[G[u][i]])dfs(G[u][i]);
		order.push_back(u);
	}
	void rdfs(int u,int cnt)
	{
		comp[u]=cnt;
		for(int i=0;i<RG[u].size();i++)if(comp[RG[u][i]]==-1)rdfs(RG[u][i],cnt);
	}
	int build()
	{
		for(int i=0;i<n;i++)if(!used[i])dfs(i);
		int cnt=0;
		for(int i=n-1;i>=0;i--)if(comp[order[i]]==-1)rdfs(order[i],cnt++);
		return cnt;
	}
	int build(vector<vector<int> >&H)
	{
		int ret=build();
		H.assign(ret,vector<int>());
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<G[i].size();j++)
			{
				if(comp[i]!=comp[G[i][j]])
					H[comp[i]].push_back(comp[G[i][j]]);
			}
		}
		return ret;
	}
};
int N,M;
vector<int>G[3<<17],H[3<<17];
bool vis[3<<17];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>N>>M;
	SCC scc(N);
	for(int i=0;i<M;i++)
	{
		int u,v,t;cin>>u>>v>>t;
		u--,v--;
		G[u].push_back(v);
		if(t==2)
		{
			scc.add_edge(u,v);
			H[u].push_back(v);
		}
	}
	scc.build();
	bool fn=false;
	{
		queue<int>Q;
		Q.push(0);
		vis[0]=true;
		while(!Q.empty())
		{
			int u=Q.front();Q.pop();
			for(int v:G[u])if(!vis[v])
			{
				vis[v]=true;
				Q.push(v);
			}
		}
	}
	for(int i=0;i<N;i++)if(vis[i])
	{
		bool ok=true;
		for(int v:H[i])if(scc[i]==scc[v])ok=false;
		if(ok)fn=true;
	}
	cout<<(fn?"Yes\n":"No\n");
}

詳細信息

Test #1:

score: 100
Accepted
time: 6ms
memory: 22000kb

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: 0ms
memory: 21968kb

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: 0
Accepted
time: 3ms
memory: 22076kb

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:

Yes

result:

ok answer is YES

Test #4:

score: 0
Accepted
time: 0ms
memory: 22152kb

input:

1000 3000
719 279 2
857 23 1
984 625 2
904 509 2
892 456 2
589 195 2
718 932 2
608 363 1
474 672 1
217 993 2
165 895 2
727 329 2
932 404 2
952 146 2
201 272 2
412 895 2
228 267 2
396 365 2
813 794 2
259 250 1
968 764 2
100 76 2
924 665 2
981 931 2
292 975 2
903 649 2
793 101 2
54 703 1
853 58 2
356 ...

output:

Yes

result:

ok answer is YES

Test #5:

score: 0
Accepted
time: 3ms
memory: 22144kb

input:

1000 3000
686 470 2
132 418 2
775 962 2
814 8 2
450 767 2
580 243 2
742 534 2
508 304 2
396 513 2
731 385 2
499 309 2
144 150 2
111 209 2
340 189 1
219 755 2
511 655 2
428 941 2
165 707 2
253 619 2
140 766 2
999 132 2
415 101 2
887 192 2
598 262 2
312 675 1
97 527 2
407 179 2
11 154 1
107 996 2
586 ...

output:

No

result:

ok answer is NO

Test #6:

score: -100
Wrong Answer
time: 0ms
memory: 22848kb

input:

10000 10000
1496 8533 1
6761 8802 2
3147 8733 2
7074 899 1
4191 9520 2
2576 1464 1
8600 116 2
72 5894 1
1605 6769 1
344 2583 2
9951 8053 2
2663 1396 1
3172 7307 1
8490 8085 2
6623 7814 2
680 4471 2
4906 3810 1
5952 8860 1
9670 3644 2
7993 6329 2
4666 1119 2
3115 3676 2
4506 2979 2
1451 2540 2
5002 9...

output:

Yes

result:

wrong answer expected NO, found YES