首页 > 其他分享 >hdu:Let's go home(2-SAT)

hdu:Let's go home(2-SAT)

时间:2023-05-15 20:22:48浏览次数:42  
标签:hdu ch 队员 int ++ add cadd go home

Problem Description
小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。
—— 余光中

集训是辛苦的,道路是坎坷的,休息还是必须的。经过一段时间的训练,lcy决定让大家回家放松一下,但是训练还是得照常进行,lcy想出了如下回家规定,每一个队(三人一队)或者队长留下或者其余两名队员同时留下;每一对队员,如果队员A留下,则队员B必须回家休息下,或者B留下,A回家。由于今年集训队人数突破往年同期最高记录,管理难度相当大,lcy也不知道自己的决定是否可行,所以这个难题就交给你了,呵呵,好处嘛~,免费**漂流一日。

Input
第一行有两个整数,T和M,1<=T<=1000表示队伍数,1<=M<=5000表示对数。
接下来有T行,每行三个整数,表示一个队的队员编号,第一个队员就是该队队长。
然后有M行,每行两个整数,表示一对队员的编号。
每个队员只属于一个队。队员编号从0开始。

Output
可行输出yes,否则输出no,以EOF为结束。

Sample input
1 2
0 1 2
0 1
1 2

2 4
0 1 2
3 4 5
0 3
0 4
1 3
1 4

Sample output
yes
no

图论-2—SAT

本题注意逆否命题边的建立

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=3e4;
int h[N],e[N],ne[N],idx;
int ch[N],ce[N],cne[N],cidx;
int f[N],vis[N],q[N],cnt;
void add(int u,int v)
{
    e[++idx]=v;
    ne[idx]=h[u];
    h[u]=idx;
}
void cadd(int v,int u)
{
    ce[++cidx]=v;
    cne[cidx]=ch[u];
    ch[u]=cidx;
}
void dfs1(int x)
{
    vis[x]=1;
    for(int i=h[x];~i;i=ne[i])
    {
        int j=e[i];
        if(!vis[j]) dfs1(j);
    }
    q[++cnt]=x;
}
void dfs2(int x,int y)
{
    vis[x]=0;f[x]=y;
    for(int i=ch[x];~i;i=cne[i])
    {
        int j=ce[i];
        if(vis[j]) dfs2(j,y);
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m;
    while(cin>>n>>m)
    {
    int T=3*n;
    memset(h,-1,sizeof h);
    memset(ch,-1,sizeof ch);
    idx=0,cnt=0;cidx=0;
    
    for(int i=1;i<=n;++i)
    {
        int a,b,c;
        cin>>a>>b>>c;
        a++;b++;c++;
        add(a,b+T);add(a,c+T);
        add(a+T,b);add(a+T,c);
        add(b,a+T);add(b,c);
        add(b+T,c+T);add(b+T,a);
        add(c,a+T);add(c,b);
        add(c+T,b+T);add(c+T,a);
        cadd(a,b+T);cadd(a,c+T);
        cadd(a+T,b);cadd(a+T,c);
        cadd(b,a+T);cadd(b,c);
        cadd(b+T,c+T);cadd(b+T,a);
        cadd(c,a+T);cadd(c,b);
        cadd(c+T,b+T);cadd(c+T,a);
    }
    for(int i=0;i<m;++i)
    {
        int a,b;
        cin>>a>>b;
        a++;b++;
        add(a,b+T);add(b,a+T);
        cadd(a,b+T);cadd(b,a+T);
    }
    for(int i=1;i<=n*6;++i)
    {
        if(!vis[i]) dfs1(i);
    }
    for(int i=n*6;i;--i)
    {
        if(vis[q[i]]) dfs2(q[i],q[i]);
    }
    bool ans=1;
    for(int i=1;i<=n*3;++i)
    {
        if(f[i]==f[i+T]) 
        ans=0;
    }
    if(ans) cout<<"yes"<<'\n';
    else cout<<"no"<<'\n';
    }
}

标签:hdu,ch,队员,int,++,add,cadd,go,home
From: https://www.cnblogs.com/ruoye123456/p/17402978.html

相关文章

  • QCategoryAxis的应用
    汉字好像是一个区间呢     axisX=QCategoryAxis()    axisX.append("first",0)    axisX.append("0分25秒",25)    axisX.append("0分50秒",50)    axisX.append("1分15秒",75)    axisX.setLabelsColor(QtGui.QColor......
  • hdu:How far away ?(树链剖分)
    ProblemDescriptionTherearenhousesinthevillageandsomebidirectionalroadsconnectingthem.Everydaypeolealwaysliketoasklikethis“HowfarisitifIwanttogofromhouseAtohouseB”?Usuallyithardtoanswer.Butluckilyintthisvilla......
  • hdu:Arbitrage(最短路变形)
    ProblemDescriptionArbitrageistheuseofdiscrepanciesincurrencyexchangeratestotransformoneunitofacurrencyintomorethanoneunitofthesamecurrency.Forexample,supposethat1USDollarbuys0.5Britishpound,1Britishpoundbuys10.0......
  • hdu:六度分离(最短路)
    ProblemDescription1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(smallworldphenomenon)”的著名假说,大意是说,任何2个素不相识的人中间最多只隔着6个人,即只用6个人就可以将他们联系在一起,因此他的理论也被称为“六度分离”理论(sixdegreesofsepa......
  • django系列-路由系统
    一、传统路由(path)#urls.pyfromdjango.contribimportadminfromdjango.urlsimportpathfromapps.webimportviewsurlpatterns=[path('home/',views.home),path('news/<int:nid>/edit/',views.news),path('article......
  • Windows平台下的Go版本切换工具-g
    voidint/gg是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换。在这里我们介绍一下在windows下的使用,涉及到我们开发所需要用到的几个go项目层环境变量它们分别是GOPATH,GOPROXY,GO111MODULE,需要先在主页->高级系统设置->环境......
  • django系列-起源&MTV设计模式
    一、django起源Django是一个开放源代码的Web应用框架,使用Python语言编写完成。由于Python语言是跨平台的,所以,不论操作系统是Windows、Linux还是macOSX,都可以开发Django应用。Web框架是一套组件,提供通用的设计模式,能够最大程度地降低开发Web站点的难度。Django的设计目标就是使开......
  • Django文件上传
    form-data格式发送form-data格式上传文件数据,文件对象存储在类字典对象request.FILES中#print(request.POST.get('xxx'))#xxx#print(request.POST.get('yyy'))#yyy#print(request.FILES)#<MultiValueDict:{'file':[<InMemoryUploadedFile:640.......
  • ubuntu22.04 ssh连接失败 userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedA
    userauth_pubkey:keytypessh-rsanotinPubkeyAcceptedAlgorithms[preauth]sshd[14785]:error:Receiveddisconnectfromxxxxport45190:3:com.jcraft.jsch.JSchException:Authfail[preauth]OpenSSH从8.7以后版本开始默认不支持ssh-rsa签名的方式,需要手动设置解决......
  • 苍鹰优化算法NGO结合LSTM做时间序列单输入单输出预测模型,要求数据是单列的时间序列数
    苍鹰优化算法NGO结合LSTM做时间序列单输入单输出预测模型,要求数据是单列的时间序列数据,直接替换数据就可以用。程序语言是matlab,需求最低版本为2021及以上。程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序......