2021/7/13——集训Day.8

今天早上去球场找了昨天找我聊天的初中同学,一起吃了早饭,他还请我喝了热牛奶。
然后来机房后先把昨天遗留的一道题 A A A
说起来今天下午他们就要开始放假了啊,真自闭啊,不过我确实好想等我集训结束也会有人约我出来玩
仔细一想我高中以来就出去溜达过两次,还都是没地方去所以只能无奈回初中,待的时间还都很短,可能不到 1 h 1h 1h 《    总    之    就    是    非    常    自    闭    》 《\;总\;之\;就\;是\;非\;常\;自\;闭\;》

#include<bits/stdc++.h>
using namespace std;
#define M 100010
#define N 510
int n,m,hd[N],hh,y[M],nxt[M],tot,zhan[N],flag[N],qd,f,h[N],zz;
void lian(int a,int b){y[++tot]=b;nxt[tot]=hd[a];hd[a]=tot;}
void zh(int x)
{
	if(flag[x])return;
	zhan[x]=1;flag[x]=1;
	for(int i=hd[x];i;i=nxt[i])
	{
		if(zhan[y[i]]){qd=y[i];h[++zz]=i;f=1;return;}
		zh(y[i]);
		if(f){h[++zz]=i;if(qd==x)f=0;}
		if(qd)return;
	}
	zhan[x]=0;
}
bool dfs(int x)
{
	if(flag[x]) return 0;
	zhan[x]=1;flag[x]=1;
	for(int i=hd[x];i;i=nxt[i])
	{
		if(i==hh)continue;
		if(zhan[y[i]])return 1;
		if(dfs(y[i]))return 1;
	}
	zhan[x]=0;
	return 0;
}
bool work()
{
	memset(zhan,0,sizeof zhan);memset(flag,0,sizeof flag);
	for(int i=1;i<=n;i++)
	{
		if(flag[i])continue;
		if(dfs(i))return 1;
	}
	return 0;
}
int main()
{
	cin>>n>>m;int x,y;
	for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);lian(x,y);}
	for(int i=1;i<=n;i++)
	{
		if(flag[i])continue;
		zh(i);
		if(zz)break;
	}
	if(zz==0){puts("NO");return 0;}
	for(int i=1;i<=zz;i++)
	{
		hh=h[i];
		if(!work()){puts("NO");return 0;}
	}
	puts("YES");
}

这个写法参考同级的zyz大佬,先找个环,然后让这个环上的所有点进队,然后再枚举,很巧妙的做法
然后听mzx学长讲课,mzx学长还带我们吃瓜,针不戳
然后晚饭时间和mzx学长打羽毛球,说起来学长打球压迫感是真强,打的很远,然后我就得到很远的地方接,然后只能打到网附近,然后他就站在网附近,我就得到处乱跑,还得害怕他轻轻点球,自闭了,蕾丝
中间我还和他说了zyz线段树,然后也算是得到了认可,还告诉我其实sort不全是用的快排,先快排,然后最后用的是冒泡,使得总时间尽量少,所以那个也不是不可能
下午回来就码题,杂题的代码就不粘了,主要还是之前写过的题。但是莫队太难写了感觉, d e b u g debug debug 死活 d e de de 不出来,自闭了。
啥也不想写,跟初中同桌聊了会儿天,回寝睡觉了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值