原创 POJ 3613 Cow Relays [矩陣連乘]

題意:求無向圖s到t恰好經k條邊(邊可以重複)的最短路徑 思路:(不是很清楚)類似於快速冪的矩陣相乘的方法,只是把相乘部分改成floyd。設ans[i][j]表示的i到j通過k條邊的最短路徑。 ans[i][j] =min (ans[i]

原创 POJ 1734 Sightseeing trip [最小環]

題意:給定一張標明若干景點的地圖,已知各景點間的通路及其路程。兩個景點之間可有多條道路,無向,無自身環。求一條旅遊迴路(包含>2個景點,路程最短,不必包含所有景點)。 思路:Floyd #include <iostream> #inclu

原创 POJ 2343 Airline company [DFS編號]

 題意:給定一個N點M邊的無向圖,爲每個邊編號1~M,若點的入度>1,其相關邊編號的最大公約數爲1,有解則輸出方案。 思路:用DFS進行編號,將同一點的相關邊存入向量組,依據gcd(x,x+1)=1,將其相關邊順序編號。 #include

原创 POJ 1201 Intervals [差分約束]

題意:在區間[0,50000]上有一些整點,並且滿足n個約束條件(u, v, w),即在區間[u, v]上至少有x個整點,問區間[0, 50000]上至少有幾個整點。 思路:spfa(鄰接表)+差分約束。構造差分約束系統的關鍵:用dict

原创 POJ 3169 Layout [差分約束]

題意:n頭牛編號爲1到n,按照編號的順序排成一列,每兩頭牛的之間的距離 >= 0。這些牛的距離存在着一些約束關係:1.有ml組(u, v, w)的約束關係,表示牛[u]和牛[v]之間的距離必須 <= w。2.有md組(u, v, w)的約

原创 URAL 1076 Trash [最佳匹配KM]

題意:給定N個垃圾桶,每個垃圾桶內裝有N種數量不同的垃圾,現把垃圾分類,每個垃圾桶裝一種垃圾,移動一個單位的垃圾消耗代價,求最小代價。 思路:最佳二分匹配,KM算法處理,注意最小,將邊權置負。 #include<stdio.h> #inc

原创 POJ 2599 A funny game [DFS博弈]

 題意:給定無向圖,兩個人依次決定移動位置,若一方無路可走則爲輸,判斷先行者的輸贏及贏時第一步的走向(若多路皆可,輸出較小的數,注意排序)走過的位置會自動銷燬,即記憶化搜索。 思路:DFS記憶化搜索,對訪問點排序,bool DFS(int

原创 URAL 1136 Parliament [DFS樹型轉換]

題意:給定一棵二叉排序樹的中序轉換爲前序的逆序輸出 思路:後序遍歷找到根,再在中序遍歷的相應位置找到分成的兩棵子樹,依次進行遍歷。 #include <stdio.h> #include <algorithm> #include <ios

原创 POJ 2349 Arctic Network [最小生成樹]

題意:有N個城市,其中M個城市有衛星頻道,兩個有衛星的城市無論多遠都能聯繫,而兩個沒有的城市只在一定的距離內才能聯繫,爲使所有的城市都可聯繫,求這個距離的最小值。 思路:求一顆最小生成樹,去掉生成樹裏的最大的M條邊,計算剩下邊的最大權。

原创 POJ 1386 Play on Words [歐拉路]

題意:字母若一首一尾相同,可相互連接,問是否能連成一串。 思路:若可連接,每個點的入度和出度相同,則爲歐拉回路,僅有兩個點(一個入度比出度多一,一個出度比入度多一),則爲歐拉路。兩者皆成立。 #include <iostream> #in

原创 POJ 2367 Genealogical tree [拓撲排序]

題意:給定一系列數點,依次給出點的後序結點,輸出順序 思路:簡單拓撲排序 #include <iostream> #include <stdio.h> #include <string.h> #define MAXN 102 using

原创 URAL 1072 Routing [最短路徑]

題意:構造圖過程中,若IP和子網掩碼的按位與有相同,則連通無權,求出既定兩點的路徑。 思路:先構圖,用dijkstra求最短路,輸出路徑。 #include <stdio.h> #include <stdlib.h> #include <

原创 POJ 2357 Labyrinth [DFS]

題意:已知迷宮形態,確定牆的數目。 思路:基本DFS #include <stdio.h> #include <iostream> #include <string.h> using namespace std; #define MAXN

原创 URAL 1056 Computer net [DFS求樹的中心]

題意:給定一棵樹,求樹的中心(即到各結點的距離最小)。若存在多個,按順序輸出。(至多兩個,依據樹的性質)。 思路:樹的中心必然爲其直徑的中點,利用兩個DFS求直徑的兩個結點及其直徑長,DFS(1)求出樹的最遠結點,DFS(2)以該結點爲起

原创 URAL 1008 Image encoding [BFS]

題意:兩種圖像的打印 思路:BFS兩種互換 #include <queue> #include <stdio.h> #include <iostream> #include <string.h> using namespace std;