題目描述
問題描述
抗日戰爭時期,冀中平原的地道戰曾發揮重要作用。
地道的多個站點間有通道連線,形成了龐大的網路。但也有隱患,當敵人發現了某個站點後,其它站點間可能因此會失去聯絡。
我們來定義乙個危險係數df(x,y):
對於兩個站點x和y (x != y), 如果能找到乙個站點z,當z被敵人破壞後,x和y不連通,那麼我們稱z為關於x,y的關鍵點。相應的,對於任意一對站點x和y,危險係數df(x,y)就表示為這兩點之間的關鍵點個數。
本題的任務是:已知網路結構,求兩站點之間的危險係數。
輸入輸入資料第一行包含2個整數n(2 < = n < = 1000), m(0 < = m < = 2000),分別代表站點數,通道數;
接下來m行,每行兩個整數 u,v (1 < = u, v < = n; u != v)代表一條通道;
最後1行,兩個數u,v,代表詢問兩點之間的危險係數df(u, v)。
輸出乙個整數,如果詢問的兩點不連通則輸出-1.
樣例輸入
7 61 3
2 3
3 4
3 5
4 5
5 6
1 6
樣例輸出
2
和剪格仔的型別差不了多少,可以用dfs加上回溯的方法進行計算,用乙個標記陣列來控制是否去除乙個和判斷乙個點是否用了,用乙個外層的迴圈嘗試去除點,然後進行判斷,是否刪除此點後不能相連了。
#include #include #include#include #include#includeusing namespace std;
typedef long long ll;
int bg, ed;
vectorvc[3000];
int used[3000];
int n, m;
int ans,mark;
void dfs(int x)
for (int i = 0; i < vc[x].size(); i++) }
}int main()
scanf("%d %d", &bg, &ed);
ans = 0;
for (int i = 1; i <= n; i++)
used[i] = 0;
if (mark) ans++;
} cout << ans << endl;
return 0;
}
61
#include
#include
#include
#include
#include
#include
usingnamespace
std;
typedeflong
long
ll;
intbg, ed;
vector<
int>
vc[3000];
intused[3000];
intn, m;
intans,mark;
voiddfs(int
x)
for (inti=
0; i
<
vc[x].size(); i
++)
}
}
intmain()
scanf("%d %d", &
bg, &
ed);
ans=
0;
for (inti=
1; i
<=
n; i
++)
used[i] =
0;
if (mark) ans
++;
}
cout
<<
ans<<
endl;
return
0;
}
來自為知筆記(wiz)
藍橋杯 2023年第四屆真題 危險係數
抗日戰爭時期,冀中平原的地道戰曾發揮重要作用。地道的多個站點間有通道連線,形成了龐大的網路。但也有隱患,當敵人發現了某個站點後,其它站點間可能因此會失去聯絡。我們來定義乙個危險係數df x,y 對於兩個站點x和y x y 如果能找到乙個站點z,當z被敵人破壞後,x和y不連通,那麼我們稱z為關於x,y...
藍橋杯2023年第四屆真題剪格仔
問題 1432 藍橋杯 2013年第四屆真題 剪格仔 時間限制 1sec 記憶體限制 128mb 題目描述 歷屆試題 剪格仔 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開...
藍橋杯2023年第四屆真題錯誤票據
題目描述 某涉密單位下發了某種票據,並要在年終全部收回。每張票據有唯一的id號。全年所有票據的id號是連續的,但id的開始數碼是隨機選定的。因為工作人員疏忽,在錄入id號的時候發生了一處錯誤,造成了某個id斷號,另外乙個id重號。你的任務是通過程式設計,找出斷號的id和重號的id。假設斷號不可能發生...