poj 1386 Play on Words(有向圖歐拉回路)

 1 /*
 2   題意:單詞拼接,前一個單詞的末尾字母和后一個單詞的開頭字母相同
 3   思路:將一個單詞的開頭和末尾單詞分別做兩個點并建一條有向邊!然后判斷是否存在歐拉回路或者歐拉路 
 4 
 5   再次強調有向圖歐拉路或歐拉回路的判定方法:
 6 (1)有向圖G為歐拉圖(存在歐拉回路),當且僅當G的基圖連通,且所有頂點的入度等于出度。
 7 (2)有向圖G為半歐拉圖(存在歐拉道路),當且僅當G的基圖連通,且存在頂點u的入度比出度大1、v的入度比出度小1,
 8    其它所有頂點的入度等于出度(頂點u,v的個數必須都是1)。
 9    
10    求該圖的連通性的時候,只要求該有向圖是弱連通的就可以了!所以轉換為無向圖的連通問題! 
11 */ 
12 #include<iostream>
13 #include<cstring>
14 #include<cstdio>
15 #include<algorithm>
16 using namespace std;
17 
18 int g[30][30];
19 char ch[1005];
20 int vis[30], used[30];
21 int inD[30], outD[30];
22 
23 void dfs(int u){
24    vis[u]=1;
25    for(int i=0; i<26; ++i)
26       if(g[u][i] && !vis[i])
27          dfs(i);
28 } 
29 
30 bool checkDeg(){
31     int inOut=0, outIn=0;
32     for(int i=0; i<26; ++i)
33        if(used[i] && inD[i]-outD[i]!=0){
34           if(inD[i]-outD[i]>1 || inD[i]-outD[i]<-1) return false;
35           else inD[i]-outD[i]>0 ? ++inOut : ++outIn; 
36        }
37     return (inOut==1 && outIn==1) || (inOut==0 && outIn==0);
38 }
39 
40 int main(){
41     int n, t;
42     scanf("%d", &t);
43     while(t--){
44         scanf("%d", &n);
45         memset(vis, 0, sizeof(vis));
46         memset(used, 0, sizeof(used));
47         memset(g, 0, sizeof(g));
48         memset(inD, 0, sizeof(inD));
49         memset(outD, 0, sizeof(outD)); 
50         while(n--){
51            scanf("%s", ch);
52            int u=ch[0]-'a', v=ch[strlen(ch)-1]-'a';
53            g[u][v]=g[v][u]=1;//無向圖的連通性 即是有向圖的弱連通 
54            used[u]=used[v]=1;
55            ++inD[v];
56            ++outD[u];
57         }
58         bool flag=true;
59         for(int i=0; i<26; ++i)
60            if(used[i]){
61               dfs(i);
62               break;
63            }
64         for(int i=0; i<26; ++i)
65            if(used[i] && !vis[i]){
66               flag=false;
67               break;
68            }
69         if(flag && !checkDeg())
70            flag=false;
71         if(flag)
72            printf("Ordering is possible.\n"); 
73         else printf("The door cannot be opened.\n");
74     }
75     return 0;
76 } 

?

轉載于:https://www.cnblogs.com/hujunzheng/p/3921728.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531730.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531730.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531730.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java web tomcat 實例_Java Web應用開發實例

[1&#xff0e;GIS的概念 1&#xff0e;1什么是gis 地理信息系統 (GIS, Geographic Information System) 是一種基于計算機的工具&#xff0c;它可以對在地球上存在的東西和發生的事件進行成圖和分析。 GI上次提到了EclipseTomcatLomboz Java Web開發環境的配置&#xff0c;可環…

poj2513Colored Sticks(無向圖的歐拉回路)

1 /*2 題意&#xff1a;將兩端涂有顏色的木棒連在一起&#xff0c;并且連接處的顏色相同&#xff01;3 思路&#xff1a;將每一個單詞看成一個節點&#xff0c;建立節點之間的無向圖&#xff01;判斷是否是歐拉回路或者是歐拉路4 5 并查集判通 奇度節點個數等于2或…

java java.lang.enum_源碼閱讀-java基礎-java.lang.Enum

1、引言枚舉類型是 JDK 5 之后引進的一種非常重要的引用類型&#xff0c;可以用來定義一系列枚舉常量。相比與常量(public static final定義)&#xff0c;在安全性、指意性、可讀性方面更勝一籌。另外它可以和switch case搭配使用。2、類定義實際上在使用關鍵字enum創建枚舉類型…

java中有關線程的題目

1&#xff0c;看一下下面程序錯誤發生在哪一行&#xff01; class Test implements Runnable{public void run(Thread t){} }2&#xff0c;輸出結果是什么&#xff1f; class Test{public static void main(String[] args){new Thread(new Runnable(){public void run(){System…

java 可逆的加密算法_java實現AES可逆加密算法

package com.hdu.encode;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;/*** AES 是一種可逆加密算法&#xff0c;對用戶的敏感信息加密處理 對…

森林轉換成二叉樹以及二叉樹還原為森林代碼

1 /*2 森林轉換成二叉樹3 思路&#xff1a;u的孩子節點為v1, v2, v3....&#xff08;v1,v2,....互為兄弟節點&#xff09; 4 那么將u的一個孩子節點&#xff08;v1&#xff09;連在u的左子樹上&#xff0c;那么其他的孩子節點都連在v1的右子樹上&#xff01; 5 …

poj1062昂貴的聘禮(Dijkstra**)

1 /*2 題意&#xff1a; 物主有一個物品&#xff0c;價值為P&#xff0c;地位為L&#xff0c; 以及一系列的替代品Ti和該替代品所對應的"優惠"Vi3 g[u][i] 表示的是u物品被i物品替換后的優惠價格&#xff01;(u>0, i>0)4 g[u][0]表示不用替換該物品的…

java openmp庫_OpenMP的環境變量及庫函數

OpenMP的環境變量&#xff1a;環境變量 描述 示例OMP_SCHEDULE 控制for循環任務分配結構的調度 OMP_SCHEDULE"guided,2"OMP_NUM_THREADS 設置默認線程的個數 OMP_SCHEDULE4OpenMP的庫函數函數名稱 描述int omp_get_num_threads(void) 返回當前使用的線程個數&#xf…

hdu1269迷宮城堡(判斷有向圖是否是一個強連通圖)

1 /* 題意&#xff1a; 給你一個圖&#xff0c;求這個有向圖示否是一個強連通圖&#xff08;每兩個節點都是可以相互到達的&#xff09;&#xff01; 思路1&#xff1a;按正向邊dfs一遍&#xff0c;將經過的節點計數&#xff0c;如果記錄的節點的個數小于…

mgg mysql_mgg文件怎么轉換mp3格式?

步驟/方法方法/步驟1:下載載視頻轉換器&#xff0c;我們說到在官網下載比較好吧。下載完成之后&#xff0c;我們就直接點擊進行安裝&#xff0c;一般 在安裝的過程也是非常快速的&#xff0c;主要是按照安裝向導上的步驟進行就可以了。方法/步驟2:安裝好之后&#xff0c;我們就…

poj 2385Apple Catching(簡單dp)

1 /*2 題意&#xff1a; 有兩棵蘋果樹&#xff0c;每一棵蘋果樹每一秒間隔的掉落下來一個蘋果&#xff0c;一個人在樹下接住蘋果&#xff0c;不讓蘋果掉落&#xff01;3 人在兩棵樹之間的移動是很快的&#xff01;但是這個人移動的次數是有限制的&#xff0c;問最多可以…

java dao 泛型的好處_java中泛型有什么作用

泛型的作用如下&#xff1a;1、類型安全泛型的主要目標是提高 Java 程序的類型安全。編譯時的強類型檢查&#xff1b;通過知道使用泛型定義的變量的類型限制&#xff0c;編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型&#xff0c;這些假設就只存在于程序員的頭腦中(或…

poj3249Test for Job(記憶化搜索)

1 /*2 題意&#xff1a;給一個DAG圖&#xff0c;n個節點&#xff0c;每個節點都對應一個值&#xff0c;入度為零的點走到出度為零的點&#xff0c;計算所有可能路徑3 經過節點值的和最大&#xff01;4 5 思路&#xff1a;記憶話搜索&#xff1a;也就是如果我們搜索…

Java兩同_java:一個類實現的兩個接口里都有同一個方法(名),怎么處理?

不一定&#xff0c;關鍵要看子類是否是抽象類。如果子類是非抽象類&#xff0c;則必須實現接口中的所有方法&#xff1b;如果子類是抽象類&#xff0c;則可以不實現接口中的所有方法&#xff0c;因為抽象類中允許有抽象方法的存在&#xff01;1、抽象類定義抽象類往往用來表征對…

ZOJ3805Machine(二叉樹左右子樹變換)

1 /*2 題意&#xff1a;建立一棵二叉樹&#xff0c;左子樹和父節點占一個寬度&#xff0c;右子樹另外占一個寬度&#xff01;3 使任意左右子樹交換順序&#xff0c;使得整個樹的寬度最小&#xff01;4 思路&#xff1a;遞歸交換左右子樹 &#xff01; …

java ==和=_Java ==和equals()的區別

前言本篇文章講的是從JVM角度比較和equals的區別一&#xff1a;** Java數據類型分類**Paste_Image.png1&#xff1a;基本數據類型又稱為原始數據類型&#xff0c;他們之間的比較應該使用()&#xff0c;比較的是他們的值。2&#xff1a;引用數據類型當引用數據類型用()進行比較&…

ZOJ 3804 YY's Minions (簡單模擬)

1 /*2 題意&#xff1a;一個矩陣中有 n*m個寵物&#xff0c;每一個寵物都有一個狀態&#xff0c; 1醒著的&#xff0c;0睡著的3 X離開的&#xff01;如果這個寵物&#xff08;醒著的&#xff09;的周圍醒著的個數>3 || <2它就會睡著&#xff0c;4 如果這個寵物&…

java接口方法實現_Java接口的簡單定義與實現方法示例

本文實例講述了Java接口的簡單定義與實現方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;1、接口是Java中最終要的概念&#xff0c;接口可以理解為一種特殊的類&#xff0c;里面全部是由全局常量和公共的抽象方法所組成。2、接口的格式:interface interfaceName{全…

NYOJ995硬幣找零(簡單dp)

1 /*2 題意&#xff1a;給你不同面額的硬幣&#xff08;每種硬幣無限多&#xff09;&#xff0c;需要找零的面值是T&#xff0c;用這些硬幣進行找零&#xff0c;3 如果T恰好能被找零&#xff0c;輸出最少需要的硬幣的數目&#xff01;否則請輸出剩下錢數最少的找零方案…

docker mysql命令大全_Docker命令大全

Docker run 命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS說明&#xff1a;-a stdin: 指定標準輸入輸出內容類型&#xff0c;可選 STDIN/STDOUT/STDERR 三項&#xff1b;-d: 后臺運行容器&#xff0c;并返回容器ID&#xff1b;-i: 以交互模式運行容器&#xff0c;…