POJ 2778

題意:很Uva項鏈題目類似。

區別:

1、字符串很多,用map hash超時,用Trie查找。

2、DFS判斷連通,和并查集判連通,被我寫錯的地方時,查森林的時候,還是要Find_Set。

  1 #include <iostream>
  2 #include <cstring>
  3 #include <cstdio>
  4 #include <algorithm>
  5 
  6 using namespace std;
  7 
  8 const int maxnode = 250000*2;
  9 const int sigma_size = 26;
 10 
 11 struct Trie {
 12     int ch[maxnode][sigma_size];
 13     int val[maxnode];
 14 
 15     int sz;
 16     Trie() {sz=1;memset(ch[0],0,sizeof(ch[0]));}
 17     int idx(char c) {return c - 'a';}
 18 
 19     void insert(char* s,int v) {
 20         int u = 0,n = strlen(s);
 21         for(int i=0;i<n;i++) {
 22             int c = idx(s[i]);
 23             if(!ch[u][c]) {
 24                 memset(ch[sz],0,sizeof(ch[sz]));
 25                 val[sz] = 0;
 26                 ch[u][c] = sz++;
 27             }
 28             u = ch[u][c];
 29         }
 30         val[u] = v;
 31     }
 32 
 33     bool que(char* s) {
 34         int u = 0,n = strlen(s);
 35         for(int i=0;i<n;i++) {
 36             int c = idx(s[i]);
 37             if(!ch[u][c])
 38                 return false;
 39             u = ch[u][c];
 40         }
 41         return true;
 42     }
 43 
 44     int values(char* s) {
 45         int u = 0,n = strlen(s);
 46         for(int i=0;i<n;i++) {
 47             int c = idx(s[i]);
 48             u = ch[u][c];
 49         }
 50         //printf("%d\n",val[u]);
 51         return val[u];
 52 
 53     }
 54 
 55 }sol;
 56 
 57 char str1[50],str2[50];
 58 
 59 int degree[maxnode];
 60 int father[maxnode];
 61 
 62 int find(int x)
 63 {
 64     if(x != father[x])
 65     father[x] = find(father[x]) ;
 66     return father[x] ;
 67 }
 68 void merge(int x,int y)
 69 {
 70     int fx = find(x) ;
 71     int fy = find(y) ;
 72     if(fx != fy)
 73     father[fx] = fy ;
 74 }
 75 
 76 int main()
 77 {
 78     //freopen("in.txt","r",stdin);
 79     int kk = 0;
 80 
 81     memset(degree,0,sizeof(degree));
 82 
 83     for(int i=0;i<maxnode;i++)
 84         father[i] = i;
 85 
 86 
 87     while(scanf("%s%s",str1,str2)!=EOF) {
 88         if(sol.que(str1)==false)
 89             sol.insert(str1,kk++);
 90         if(sol.que(str2)==false)
 91             sol.insert(str2,kk++);
 92 
 93         int u,v;
 94         u = sol.values(str1);
 95         v = sol.values(str2);
 96 
 97         //printf("%d %d\n",u,v);
 98 
 99         degree[u]++;
100         degree[v]++;
101 
102         merge(u,v);
103     }
104 
105     int s = find(0);
106     int num = 0;
107     for(int i=0;i<kk;i++)
108     {
109         if(degree[i]%2==1)
110             num++;
111 
112         if(num>2)   //度數為奇數的結點數大于3,歐拉路必不存在
113         {
114             cout<<"Impossible"<<endl;
115             return 0;
116         }
117 
118         if(find(i)!=s)   //存在多個祖先,圖為森林,不連通
119         {
120             cout<<"Impossible"<<endl;
121             return 0;
122         }
123     }
124 
125     if(num==1) //度數為奇數的結點數等于1,歐拉路必不存在
126         cout<<"Impossible"<<endl;
127     else       //度數為奇數的結點數恰好等于2或不存在,存在歐拉路
128         cout<<"Possible"<<endl;
129 
130     return 0;
131 }
View Code

?

轉載于:https://www.cnblogs.com/TreeDream/p/7200951.html

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

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

相關文章

linux掛載VMFS硬盤,ESX4.1掛載NFS共享存儲(VMkernel)

要使用vmotion,iscsi,nfs功能&#xff0c;必須啟用VMkernel端口&#xff0c;ESX 4.1默認不啟用&#xff0c;ESXi 5.x默認啟用。在 vCenter Server“SZVCENTER01”上調用對象“datastoreSystem-44”的“HostDatastoreSystem.CreateNasDatastore” 失敗。掛載NFS存儲的ESX控制臺命…

Perl學習之四:語句(續)

循環控制&#xff1a;1.last 退出標簽的語句塊2.next 3.redo不推薦&#xff0c;循環次數不可控 4.goto不推薦。***************************************標簽&#xff1a; 先定義一個 labellast|next|redo|goto label&#xff1b; last VS next 相當于C語言中的&#xff1a;las…

2017年8個最流行的Web編程趨勢

互聯網一直在不斷的發展&#xff0c;這意味著開發人員必須及時了解當前的所有變化。人們在新聞、社交、購物到銀行等各大方面都與互聯網有著千絲萬縷的聯系。因此&#xff0c;為了滿足全球數百萬網絡用戶的需求&#xff0c;Web開發需求正在上升。Web編程趨勢是在W開發的過程中不…

linux 分卷壓縮到指定目錄,運用在android下Linux分卷壓縮與分卷解壓的命令

protected static Vector execRootCmd(String paramString) {Vector localVector new Vector();try {Process localProcess Runtime.getRuntime().exec("su ");// 經過Root處理的android系統即有su命令OutputStream localOutputStream localProcess.getOutputStre…

gRPC-rs:從 C 到 Rust

介紹 在上篇文章中&#xff0c;我們講到 TiKV 為了支持 [gRPC]&#xff0c;我們造了個輪子 [gRPC-rs]&#xff0c;這篇文章簡要地介紹一下這個庫。首先我們來聊聊什么是 gRPC。gRPC 是 Google 推出的基于 [HTTP2] 的開源 RPC 框架&#xff0c;希望通過它使得各種微服務之間擁有…

紅帽linux無法進入tty,linux自啟腳本(以及無法進入tty控制臺)

1.建立需開機運行的腳本auto(可以不要后面的.sh后綴)2.放在/etc/init.d/目錄下 (操作系統復制命令&#xff0c;在當前文件夾下復制sudo cp auto /etc/init.d)[可能先要對init.d取得x權限]3.賦予權限&#xff0c;在init.d文件目錄下sudo chmod 775 ./auto4.執行&#xff0c;命…

【最短路】SDUT3034--炸學校

炸學校 Time Limit: 2000ms Memory limit: 65536K 有疑問&#xff1f;點這里^_^ 題目描述 “小兒么小二郎&#xff0c;背著那炸彈炸學校&#xff0c;不怕那太陽曬&#xff0c;也不怕那風雨狂。”估計這首歌我們大家都耳熟能詳了。于是就有一群小學生們商量著炸學校。要把本…

管控研發部門USB設備

前提背景&#xff1a;研發部門圖紙經常泄漏&#xff0c;領導說要管控USB,但是要能讀&#xff0c;只限制不能寫。本想大力推薦Devicelock&#xff0c;因費用原因沒了后話&#xff0c;只好使用最基本的域策略進行實施.51CTOblog傳圖片這么麻煩&#xff0c;還是全部寫文字好了。實…

linux系統編程練手項目,精選 22 個 C++ 項目,編程小白練手首選!

C/C 做為元老級的編程語言&#xff0c;任時光更迭依舊屹立不倒&#xff0c;哪怕現在煊赫一時的AI&#xff0c;其底層也是用其編寫。linux那么做為新手該如何快速上手 C 呢&#xff1f;固然是敲代碼啊&#xff01;一切不寫代碼的學編程都是瞎搞。下面為你們精選了 22 個 C 項目&…

Swift iOS : WebView緩存圖片的方法

廣告 Swift iOS開發小書 &#xff0c;幫你快速上手開發 www.ituring.com.cn/book/2413 正文 每次加載WebView內容&#xff0c;如果圖片可以緩存的話&#xff0c;速度就會非常快。默認情況下&#xff0c;WebView自己來加載圖片&#xff0c;緩存的策略也是自己定的。如想要自己緩…

linux怎么同時查看兩個文件,MultiTail - 在單個Linux終端中同時監視多個文件

無論是服務器管理員還是程序員&#xff0c;我們需要參考多個日志文件來有效地排除故障任務。 為了實現這一點&#xff0c;我們必須打開&#xff0c;拖尾或更少的不同shell中的每個日志文件。 但是&#xff0c;我們可以使用傳統的tail命令狀尾-f在/ var / log / messages文件或尾…

新一代藍牙5標準開啟 會成為物聯網的最佳選擇嗎

在過去&#xff0c;藍牙在生活中最常見的應用就是鍵盤、鼠標、音箱和藍牙耳機&#xff0c;這些傳輸對頻寬要求不高&#xff0c;藍牙技術的采用不僅節省了線材成本&#xff0c;還增加了產品的靈活性。藍牙技術聯盟(SIG)正式宣布推出新一代標準藍牙5(Bluetooth 5)&#xff0c;其主…

今日BBC

1、隨身英語 Dry January 新年戒酒一個月 link 2、地道英語 Hot potato 棘手的問題“燙手山芋” link 3、今日新聞 Brussels attacks: Belgian police arrest six suspects link The arrests were made in the Schaerbeek district. There is no word yet on the identitie…

c語言中的指針語法,C語言中指針的用法介紹

C語言中指針的用法介紹for(int i0;i{num*s;s;}return num;)這個例子中的函數 fun統計一個字符串中各個字符的 ASCII 碼值之和。前面說了&#xff0c;數組的名字也是一個指針。在函數調用中&#xff0c;當把 str 作為實參傳遞給形參 s后&#xff0c;實際是把 str 的值傳遞給了 s…

實驗吧 貌似有點難 偽造ip

解題鏈接&#xff1a; http://ctf5.shiyanbar.com/phpaudit/ 解答&#xff1a; 點擊View the source code —>代碼顯示IP為1.1.1.1即可得到KEY—>使用modify header偽造IP—>拿到flag 相關&#xff1a; modify header我也是第一次用&#xff0c;下面附上相關說明&…

用C語言用指針怎么算通用定積分,C語言:利用指針編寫程序,用梯形法計算給定的定積分實例...

題目要求利用指針編寫程序&#xff0c;用梯形法計算下列公式中的定積分&#xff1a;參考代碼首先說明一下指針的用處&#xff1a;因為所傳遞的參數均為數字&#xff0c;并不需要使用指針提高效率&#xff0c;故這里使用指針指向函數。請注意calc()函數中的這一語句&#xff1a;…

單點登錄系統cas資料匯總

http://jasig.github.io/cas/4.0.x/index.html 主頁https://jasigcas.herokuapp.com demohttps://wiki.jasig.org/display/CASUM/Home 4.x之前的文檔http://jasig.github.io/cas/4.1.x/index.html …

有限小數用c語言,分數化為有限小數或無限循環小數(c實現)

問題描述&#xff1a;將分數轉化為小數&#xff0c;相信很多人都會吧&#xff0e;那么&#xff0c;這里給定一個分數N/D,N為分子&#xff0c;D為分母(N,D均為整數)&#xff0c;試編程求出N/D的小數形式&#xff0c;當然如果這個小數為無限循環小數&#xff0c;則把循環的部分用…

你該把前端外包出來了

2019獨角獸企業重金招聘Python工程師標準>>> 移動熱潮慢慢褪去&#xff0c;大的幾個app已經霸占了所有的人桌面&#xff0c;而微信卻變得越來越重要。微信里面&#xff0c;提倡H5的應用&#xff0c;H5應用開發成本低、上線快、易調整、跨平臺等諸多優勢&#xff0c;…

R 統計學工具部署和使用

由于公司內部對于市場數據分析的需求&#xff0c;要求引入R統計工具&#xff0c;并集成到報表工具中。對于R的介紹&#xff0c;大家請百度一下&#xff0c;當然&#xff0c;最好能去看官方的說明 https://www.r-project.org/ 下面簡單介紹一下R工具的安裝和數據分析工具Spotfir…