1. 原題參照pat官網
戰爭中非常重要的是讓所有的城市被高速公路連線起來,如果乙個城市被敵人占領,所有來自/通往這個城市的高速公路都會被截斷關閉。我們必須立即知道,如果我們需要保持所有的高速公路能連線剩下全部的城市,給地圖上所有有剩餘高速公路的城市做標記,你需要迅速告知需要補修幾條高速公路。
比如,如果我們有三個城市和兩條高速公路連線city1-city2 和city1-city3。那麼如果city1被敵人佔據,我們必須再修一條高速公路city2-city3。
輸入:每個輸入有乙個測試用例,每個測試用例第一行有3個數字n(<1000),m和k,分別為城市總數,剩餘高鐵數量,以及多少城市需要檢查。之後會有m行列出,每行用兩個整數描述一條高速公路,是這條高速公路連線的城市,這個城市是1到n的數字,最後,有一行包含k個數字,表示我們concern關注的城市。
輸出:每個k城市,若該城市消失了,我們需要修復幾條高速公路。
思路:連通圖問題
建立連通圖,然後對每個關注的結點,如果刪除該節點及其相連的線,可以形成n個連通圖,需要建立n-1條公路即可。
2. 生詞記錄
3. 知識點【& question】
#include
#include
#include
#include
using
namespace std;
void
dfs(vector<
bool
>
&visit, vectorbool
>>
&e,int index,
int nokey)}}
intmain()
for(
int i =
0; i < m; i++
)for
(int j =
0; j < k; j++
)///遍歷查詢關心的節點值
} concern[j]
= caculate-1;
}for
(int j =
0; j < k; j++
)return0;
}
4. **record
這個時候就要屈服於網上大神們的思路而放棄自己的,哭哭tat ! ! !
啊啊啊啊啊啊啊也是遇到關心的點就拒絕訪問,不用考慮跳過,直接把visit[concern [ i ] ]置為true,就可以了,但是我的為啥錯捏,為啥捏,我還是不理解。
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define maxsize 30
void
dfs(vector<
bool
>
&visit, vectorbool
>>
&e,int index)}}
intmain()
for(
int i =
0; i < m; i++
)for
(int i =
0; i < k; i++
)for
(int i =
0; i < k; i++
)int cnt =0;
//計算圖的連通分量
visit[concern[i]]=
true
;for
(int j =
1; j <= n; j++)}
if(i < k -
1) cout << cnt -
1<< endl;
else cout << cnt -1;
}return0;
}
PAT甲級1021題,部分測試點無法通過
include include include namespace pata1021 while v father v return ori void unionset int s1,int s2 void init int calblocks for int i 1 i n i return bl...
PAT乙級1013 數素數(C語言),測試點4
令 p i 表示第 i 個素數。現任給兩個正整數 m n 10 4 請輸出 p m 到 p n 的所有素數。輸入格式 輸入在一行中給出 m 和 n,其間以空格分隔。輸出格式 輸出從 p m 到 p n 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。輸入樣例 5 27 ...
PAT甲級 A1048 測試點1 未通過解決方法
提交 僅有測試點1未通過,建議測試以下用例 input 5 15 1 16 15 12 20ouput right no solution若使用標記陣列記錄數字出現次數,且在迴圈中不對標記陣列中大於總錢數的值進行處理,則有可能輸出錯誤 20 5修改後的 未優化 include includeint ...