zoukankan      html  css  js  c++  java
  • POJ 3678

    这道题唯一一个注意的地方是,如出现X/Y=0这种关系时,X=0,Y=0。已经是可以肯定的关系了,所以可以连边X->-X。

    我也错了上面这地方。看来,还不够。以后要细心才好。

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <cstring>
      4 #include <string.h>
      5 #include <algorithm>
      6 #include <cmath>
      7 
      8 using namespace std;
      9 
     10 const int MAXN=2050;
     11 const int MAXM=4001000;
     12 int n,m;
     13 char s[10];
     14 int head[MAXN],dfn[MAXN],low[MAXN],st[MAXN],tot,stop,indx,pat,belong[MAXN];
     15 bool stack[MAXN];
     16 
     17 struct{
     18     int u,v;
     19     int next;
     20 }edge[MAXM];
     21 
     22 void addedge(int u,int v){
     23     edge[tot].u=u;
     24     edge[tot].v=v;
     25     edge[tot].next=head[u];
     26     head[u]=tot++;
     27 }
     28 
     29 void tarjan(int u){
     30     int v;
     31     dfn[u]=low[u]=++indx;
     32     st[stop++]=u;
     33     stack[u]=true;
     34     for(int e=head[u];e!=-1;e=edge[e].next){
     35         v=edge[e].v;
     36         if(dfn[v]==0){
     37             tarjan(v);
     38             low[u]=min(low[u],low[v]);
     39         }
     40         else if(stack[v]){
     41             low[u]=min(low[u],dfn[v]);
     42         }
     43     }
     44     if(dfn[u]==low[u]){
     45         pat++;
     46         do{
     47             v=st[--stop];
     48             belong[v]=pat;
     49             stack[v]=false;
     50         }while(u!=v);
     51     }
     52 }
     53 
     54 int main(){
     55     int u,v,c;
     56     while(scanf("%d%d",&n,&m)!=EOF){
     57         
     58         memset(head,-1,sizeof(head));
     59         tot=stop=indx=pat=0;
     60         memset(dfn,0,sizeof(dfn));
     61         memset(low,0,sizeof(low));
     62         memset(stack,false,sizeof(stack));
     63         memset(belong,0,sizeof(belong));
     64         
     65         for(int i=0;i<m;i++){
     66             scanf("%d%d%d%s",&u,&v,&c,s);
     67             if(strcmp(s,"OR")==0){
     68                 if(c==0){
     69                     addedge(2*u,2*u+1);
     70                     addedge(2*v,2*v+1);
     71                 }
     72                 else{
     73                     addedge(2*u+1,2*v);
     74                     addedge(2*v+1,2*u);
     75                 }
     76             }
     77             else if(strcmp(s,"AND")==0){
     78                 if(c==0){
     79                     addedge(2*u,2*v+1);
     80                     addedge(2*v,2*u+1);
     81                 }
     82                 else {
     83                     addedge(2*u+1,2*u);
     84                     addedge(2*v+1,2*v);
     85                 }
     86             }
     87             else{
     88                 if(c==0){
     89                     addedge(2*u,2*v);
     90                     addedge(2*v,2*u);
     91                     addedge(2*u+1,2*v+1);
     92                     addedge(2*v+1,2*u+1);
     93                 }
     94                 else{
     95                     addedge(2*u,2*v+1);
     96                     addedge(2*u+1,2*v);
     97                     addedge(2*v,2*u+1);
     98                     addedge(2*v+1,2*u);
     99                 }
    100             }
    101         }
    102         for(int i=0;i<2*n;i++){
    103             if(dfn[i]==0){
    104                 tarjan(i);
    105             }
    106         }
    107         
    108         bool flag=true;
    109         for(int i=0;i<n;i++){
    110             if(belong[i*2]==belong[2*i+1]){
    111                 printf("NO
    ");
    112                 flag=false;
    113                 break;
    114             }
    115         }
    116         if(flag)
    117         printf("YES
    ");
    118     }
    119     return 0;
    120 }
    View Code
  • 相关阅读:
    LightOJ 1132 Summing up Powers(矩阵快速幂)
    hdu 3804 Query on a tree (树链剖分+线段树)
    LightOJ 1052 String Growth && uva 12045 Fun with Strings (矩阵快速幂)
    uva 12304 2D Geometry 110 in 1! (Geometry)
    LA 3263 That Nice Euler Circuit (2D Geometry)
    2013 SCAUCPC Summary
    poj 3321 Apple Tree (Binary Index Tree)
    uva 11796 Dog Distance (几何+模拟)
    uva 11178 Morley's Theorem (2D Geometry)
    动手动脑
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3857288.html
Copyright © 2011-2022 走看看