首页 > 其他分享 >单词 Play on Words

单词 Play on Words

时间:2024-04-05 16:00:17浏览次数:20  
标签:Play return int father 单词 Words false find out

原题链接

题解

我们将一个单词的首字母和尾字母看成两个结点,每个单词代表一条有向边。

此时题意为:给你一个有向图,让你找到一条路径,使得仅仅只经过每条边一次。

那么题意就是让我们求一个有向图的欧拉回路。

code

 

#include<bits/stdc++.h>
using namespace std;
int father[30],in[30],out[30];
void build(){
    for (int i=1;i<=26;i++){
        father[i]=i;
        in[i]=0;
        out[i]=0;
    }
}
int one;
int find(int x){
    if (father[x]!=x) father[x]=find(father[x]);
    return father[x];
}
void input(int n){
    for (int i=1;i<=n;i++){
        string s;
        cin>>s;
        int len=s.size();
        out[s[0]-'a'+1]++;
        in[s[len-1]-'a'+1]++;
        int fx=find(father[s[0]-'a'+1]),fy=find(father[s[len-1]-'a'+1]);
        if (fx!=fy) father[fx]=fy;
        one=s[0]-'a'+1;
    }
}
bool Fleury(){
    int n1=0,n2=0;
    for (int i=1;i<=26;i++){
        if (in[i]==out[i] && in[i]==0) continue;
        if (in[i]-out[i]==1) {
            n1++;
            if (n1>1) return false;
            continue;
        }
        if (out[i]-in[i]==1){
            n2++;
            if (n2>1) return false;
            continue;
        }
        if (in[i]!=out[i]) return false;
        if (find(father[i])!=one) return false;
    }
    return true;
}
int main(){
    int t;
    cin>>t;
    while (t--){
        build();
        int n;
        cin>>n;
        input(n);
        one=find(father[one]);
        if (Fleury()) cout<<"Ordering is possible.\n";
        else cout<<"The door cannot be opened.\n";
    }
    return 0;
} 

 

标签:Play,return,int,father,单词,Words,false,find,out
From: https://www.cnblogs.com/purple123/p/18115833

相关文章

  • 【漏洞复现】宏景人力资源信息管理系统 DisplayExcelCustomReport 任意文件读取漏洞
    免责声明:文章来源互联网收集整理,文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者......
  • C语言经典例题(17) --- 最小公倍数、单词倒置、你是天才吗?、完美成绩、判断整数的奇偶
    1.最小公倍数正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。输入:57输出:35#include<stdio.h>intmain(){inta=0;intb=0;int......
  • 2-32. 制作 Player 的动画
    创建Animator动画状态机Idle->WalkRun没有退出时间,Duration为1Idle的BlendTreeWalkRun的BlendTree创建AnimatorOverrideController用同样的方法创建头发和手臂Player控制动画状态机播放动画按住左Shift键的时候,让人物进入走路状态项......
  • P3435 [POI2006] OKR-Periods of Words
    原题链接题解1.Q是S的前缀2.Q!=S3.S是QQ的前缀,且S可以等于QQ4.从S中挖掉Q后剩下的部分与Q(s)的前半部分重合,也就是公共前后缀5.要让Q尽可能长,就要让公共前后缀尽可能短(非零)细节请看代码解答一些疑惑:为什么不能直接求最短公共前后缀,而是要先求最大公共前后缀?code#include<b......
  • playwright for net 对日期选择控件(My97DatePicker)的设置
     playwrightf对日期选择控件的设置,直接使用js脚本publicpartialclassMainForm:Form{IPlaywrightplaywright;IPagepage;publicMainForm(){InitializeComponent();}privateasyncvoidMainForm_Loa......
  • KingbaseES复制冲突中谁阻塞walreplay
    背景回顾一下流复制冲突相关参数:hot_standby_feedback:从库反馈给主库快照,主库vacuum时不回收最老快照之后产生的垃圾,注:备库长查询将导致主库表膨胀。vacuum_defer_cleanup_age:当触发vacuum时,延迟指定事务后触发。recovery_min_apply_delay:如果将此参数设置为5分钟,则只......
  • Luogu P3294 背单词
    观前须知本题解全部内容遵循CCBY-NC-SA4.0Deed原则同步发布于Luogu题解区更好的观看体验点这里笔者的博客主页正文LuoguP3294【SCOI2016】背单词笔者在刷题的时候看到了这道好题花了四十分钟切掉以后,看了一下题解发现自己的想法不太一样所以想做一篇适合我这样的......
  • Wpf Combobox display multiple fields columns properties
    <ComboBoxGrid.Row="0"x:Name="cbx"VirtualizingPanel.VirtualizationMode="Recycling"HorizontalAlignment="Stretch"VerticalContentAlignment="Center"FontSize="30"Selec......
  • 英语背单词 专四词汇 2024年04月 ChatGPT
    2024-04-03  2024-04-02  2024-04-01IndexWordPronunciationPartsofSpeechExplanationTranslationinChinese1insulationɪnsəˈleɪʃənnounMaterialorsubstanceusedtopreventheat,electricity,orsoundfrompassing绝缘;隔热材料2......
  • playwright 操作
    importtimeimportcsvfromplaywright.sync_apiimportPlaywright,sync_playwrightwithsync_playwright()asplaywright:browser=playwright.chromium.launch(headless=False)#打开一个浏览器会话context=browser.new_context()context.clear_......