首页 > 其他分享 >【题解】CF1368E

【题解】CF1368E

时间:2023-03-20 16:01:22浏览次数:52  
标签:head int 题解 rd CF1368E tail getchar

题目描述

有一个由 \(n\) 个点 \(m\) 条边组成的有向无环图,每个点出度至多为2。您需要标记一些点(不超过 \(\frac{4}{7}n\) 个)。标记一个点 \(u\) 将会删除所有与 \(u\) 连接的边

您需要找到一种标记点的方案,使得删边后的图中每一条路径至多有一条边。

题解

不想说什么了,放个其他人的题解
题解链接

#include<bits/stdc++.h>
using namespace std;
inline int rd(){
	int f=1,j=0;
	char w=getchar();
	while(!isdigit(w)){
		if(w=='-')f=-1;
		w=getchar();
	}
	while(isdigit(w)){
		j=j*10+w-'0';
		w=getchar();
	}
	return f*j;
}
const int N=200010;
int head[N],to[N*2],fro[N*2],tail;
int n,m,own[N],bel[N];
int ans[N],cnt;
inline void adlin(int x,int y){
	to[++tail]=y,fro[tail]=head[x],head[x]=tail;
	return ;
}
void work(){
	n=rd(),m=rd();
	tail=0,cnt=0;
	for(int i=1;i<=n;i++)head[i]=bel[i]=0;
	for(int i=1;i<=m;i++){
		int x=rd(),y=rd();
		adlin(y,x);
	}
	for(int i=1;i<=n;i++){
		for(int k=head[i];k;k=fro[k]){
			int x=to[k];
			if(bel[x]==1)bel[i]=2;
			if(bel[x]!=2&&!bel[i])bel[i]=1;
		}
	}
	for(int i=1;i<=n;i++)if(bel[i]==2)ans[++cnt]=i;
	printf("%d\n",cnt);
	sort(ans+1,ans+cnt+1);
	for(int i=1;i<=cnt;i++)printf("%d ",ans[i]);
	printf("\n");
	return ;
}   
signed main(){
	int T=rd();
	while(T--)work();
	return 0;
}
/*
1
10 17
1 4
1 10
2 4
8 10
3 8
5 8
9 10
3 9
7 8
2 10
5 9
6 10
6 9
4 7
7 9
8 9
4 6
*/

标签:head,int,题解,rd,CF1368E,tail,getchar
From: https://www.cnblogs.com/T-water/p/17236609.html

相关文章

  • 【题解】CF1225F
    题目描述给出一棵n个节点的有根树T,点编号为0∼n−1。记f(u)为u的父节点。初始时你有一条n个点的链L(标号任意),每次操作你可以令f(u)←f(f(u))。需要将链改造......
  • 【题解】CF1439A2
    题目描述给定一个\(n\timesm\)的\(01\)矩阵,每次操作可以将某个\(2\times2\)的矩阵内的\(3\)个数取反,请在\(n\timesm\)步内将矩阵变为全\(0\)。题解这种题......
  • C# 上传接口返回错误: (413) Request Entity Too Large问题解决
    问题报错:Failedtoloadresource:theserverrespondedwithastatusof413(RequestEntityTooLarge)找了很多方法,说什么反向代理配置啥的其实很多项目并没有开反......
  • CF1804C 题解
    题目链接今天好不容易有空更那就再更一篇(一道很有意思的诈骗题,我会写出我的思考过程。题意:(我的翻译)一个转盘有$n$个格子分别为$0$$1$$2$$\cdots$$n-1$,初始时在......
  • 【题解】ABC294
    AtCoderBeginnerContest294AFilter无意义题,找出所有偶数。BASCIIArt无意义题,按题意模拟。CMergeSequences无意义题,离散化即可。DBank无意义题,set维护即......
  • ucyhf 题解
    题目传送门愚人节题目,具体题面看翻译。先写一个判断素数的函数,这题并不需要什么特殊的筛法,新手可以参考以下代码。boolisprime(intx){if(x<=1)return0;......
  • Party 题解
    题目传送门一道简单的并查集练手题。与普通的并查集不同,除此之外还需记录下来某两人的讨厌关系,使得他们不能在同一集合中。if(find_root(x)==find_root(y))vis[find......
  • CF1060E 题解
    前言题目传送门!更好的阅读体验?提供一种更加麻烦的换根DP写法。思路代码#include<iostream>#include<cstdio>usingnamespacestd;typedeflonglongll;cons......
  • 3 月 15 日测试题解
    3月15日测试题解这学校的评测机我是真的吐了,\(\text{380pts}\rightarrow\text{300pts}\),电脑速度跟BZOJ有的一拼。一句话总结:简单,过于简单,但是在练习读题能力上十......
  • 3 月 19 日测试题解
    3月19日测试题解原来这就是AK的滋味吗,不过,我却完全没感到开心呢。T1题意给出两个整数\(a\),\(b\),重复以下操作直到\(a=b\):设\(a>b\),否则交换\(a\)与\(......