//在網上看了看其他人的題解,有拿並查集判斷去除某個點後兩個是否屬於同一棵樹的,有用dfs判斷從某點到某點的方法有幾個,順便記錄路上經過點,到達則每個點經過次數加一,最後判斷方法和次數是否一致,一致則說明為必經dian ,....也可以用深搜和廣搜判斷去除某一點後,是否還能抵達.....
我看了看 好像屬於割點,可以用tarjan做......然後 在網上找了個關於強聯通的模板(poj1236).....求得是所有點組成的圖的割點,,,,所以,解法還是和dfs或者bfs差不多,,都是去除某個點,然後判斷是否屬於同乙個陣列裡......
但是 應該還是有問題,,只有40分....待解決.............
的博文也用了tarjan.....模板都是一樣的,不過他新建了乙個陣列endishere,用來標記起點到終點的割點...標記方法在我看來是十分巧妙的...即不斷往下搜尋...直到終點,然後標記終點的的上個點,回溯即可將改路徑上走過的點標記..之後判斷1-n這n個點,被標記並且是割點即可....
模板應該如下..(能不能過..我沒試過...等想寫了改下提交試試)
//判斷是否為割點
void findcutnode(int dep, int u)
}else if(parent[u] != v && dfn[v] < low[u])//v的父節點不能用來跟新他的low值 } }
else low[u] = min(low[u], dfn[v]);
}}
//強聯通求割邊和割點的問題
#include #include#include #define v 105
#define e 100500
const int inf = 0x3f3f3f;
using namespace std;
struct edge
edge[e];
int head[v], e, n, m;
int indeg[v], outdeg[v]; //點的入度和出度數
int belong[v], low[v], dfn[v], scc, cnt;//dfn:遍歷到u點的時間; low:u點可到達的各點中最小的dfn[v]
int s[v], top;
bool vis[v];//v是否在棧中
bool cut[v];
int addedge(int u, int v)
//int cont = 0;
void tarjan(int u)
*/low[u] = low[u] < low[v] ? low[u] : low[v];//回溯保證low為所聯絡的最小值
}else if (vis[v] && low[u] > dfn[v])//v在棧中,修改low[u]
low[u] = dfn[v];
}if (dfn[u] == low[u])//u為該強連通分量中遍歷所成樹的根
while (u != v);
}}int solve(int i)
void count_deg()
}}int main()
int l, r;
cin >> l >> r;
int cutn = 0;
//將i點去除後,判斷l與r是否在同乙個樹里...若不在則為割點
for(int i=1; i<=n; i++)
/* count_deg();
int inc = 0, outc = 0;
for (int i=1; i<=scc; ++i)
printf("%d\n%d\n", inc, (inc > outc ? inc : outc));*/}}
if(cutn == 0)
cout << -1 << endl;
else
cout << cutn <}
return 0;
}
藍橋杯試題 歷屆試題 分糖果
問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。你的任務是 在已知的初始糖果情形下,老師一共需要補...
藍橋杯 歷屆試題 分糖果
歷屆試題 分糖果 時間限制 1.0s 記憶體限制 256.0mb 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖...
藍橋杯 歷屆試題 分糖果
歷屆試題 分糖果 時間限制 1.0s 記憶體限制 256.0mb 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖...