今天早上去球场找了昨天找我聊天的初中同学,一起吃了早饭,他还请我喝了热牛奶。
然后来机房后先把昨天遗留的一道题
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 不出来,自闭了。
啥也不想写,跟初中同桌聊了会儿天,回寝睡觉了