#include<stdio.h>

#include<string.h>

#define N 2100

struct node {

int u,v,next;

}bian[N*N];

int min(int a,int b) {

return a>b?b:a;

}

int yong,dfn[N],low[N],ans[N],stac[N],top,index,num,head[N],visit[N];

void addedge(int u,int v) {

bian[yong].u=u;

bian[yong].v=v;

bian[yong].next=head[u];

head[u]=yong++;

}

void tarjan(int u) {

dfn[u]=low[u]=++index;

stac[++top]=u;

visit[u]=1;

int i;

for(i=head[u];i!=-1;i=bian[i].next) {

int v=bian[i].v ;

if(!dfn[v]) {

tarjan(v);

low[u]=min(low[u],low[v]);

}

else

if(visit[v]==1)

low[u]=min(low[u],dfn[v]);

}

if(dfn[u]==low[u]) {

++num;

int t;

do{

t=stac[top--];

ans[t]=num;

 visit[t]=2;

}while(t!=u);

}





}

int main(){

int n,m,i,j,ii,jj,a,b,c,d;

while(scanf("%d%d",&n,&m)!=EOF) {

yong=0;index=0;num=0;top=0;//初始化

memset(dfn,0,sizeof(dfn));

memset(low,0,sizeof(low));

memset(head,-1,sizeof(head));

memset(stac,0,sizeof(stac));

memset(ans,0,sizeof(ans));

memset(visit,0,sizeof(visit));

while(m--) {

scanf("%d%d%d%d",&a,&b,&c,&d);

i=a*2+c;

j=b*2+d;

if(c==0)

ii=i+1;

else

ii=i-1;

if(d==0)

jj=j+1;

else

jj=j-1;

             addedge(i,jj);

addedge(j,ii);

}

for(i=0;i<2*n-1;i++)

if(visit[i]!=2)

tarjan(i);

for(i=0;i<n;i++)

if(ans[i*2]==ans[i*2+1])

break;

if(i==n)

printf("YES\n");

else

printf("NO\n");

}

return 0;

}

最新文章

  1. CSS布局设计
  2. [Bundling and Minification ] 一、如何绑定
  3. 0406.复利计算器5.0版-release
  4. Java中断言的使用(转)
  5. 通达OA 公共文件柜二次开发添加管理信息(图文)
  6. css3 Transition动画执行时有可能会出现闪烁的bug
  7. 如何为WPF添加Main()函数 程序入口点的修改
  8. animate CSS动画程序接口(仅Chrome可用)
  9. sql server日期字段值的比较
  10. Asp.Net MVC 上传图片到数据库
  11. Tomcat+Eclipse乱码问题解决方法
  12. C++学习笔记1(扩充:C++中的格式控制)
  13. C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)
  14. bzoj3289 Mato的文件管理 莫队+树状数组
  15. Android 添加第三方jar包
  16. Codeforces Round #449 Div. 1
  17. PHP实现流程管理功能
  18. C++ StrCat()
  19. 制作dlib(面部识别检测)静态库
  20. Webpack+React项目入门——入门及配置Webpack

热门文章

  1. Akka源码分析-Cluster-Distributed Publish Subscribe in Cluster
  2. 01-vue指令
  3. JAVA的双色球 小程序
  4. spring 异常处理
  5. ACM_01背包
  6. win10下spark+Python开发环境配置
  7. 383 Ransom Note 赎金信
  8. 项目需求会__前端er定位的思考~
  9. System.AppDomain类详解(二)
  10. opencv识别验证码的教程和资料