大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適,給出m個意見,找到得票最多的人
dfs求出每個點所在的連通分量,然後縮點,並記錄縮點之後每個點的入度(要將圖反向),遍歷得到每個點連通的點數,減去自己即為得票數,而與該點在同乙個連通分量內的點都可選。
#include
#include
#include
#include
#include
using
namespace std;
int t, n, m;
const
int maxn =
5010
;const
int inf =
0x3f3f3f3f
;int vis[maxn]
, cmp[maxn]
,pre[maxn]
,low[maxn]
,sz[maxn]
,dfs_clock,k;
vector<
int> g[maxn]
, rg[maxn]
;stack<
int> s;
void
dfs(
int u)
elseif(
!cmp[v]
) low[u]
=min
(low[u]
, low[v]);
}if(pre[u]
== low[u])}
}int
rdfs
(int u)
return ans;
}void
scc()}
int in_deg[maxn]
;int support[maxn]
;int
main()
int x, y;
for(
int i =
0; i < m; i++
)scc()
;memset
(in_deg,0,
sizeof
(in_deg));
//縮點
for(
int i =
0; i < n; i++)}
int mx =0;
for(
int i =
1; i <= k; i++)}
cout <<
"case "
<< ca <<
": "
<< mx-
1<< endl;
bool flag =
false
;for
(int i =
0; i < n; i++)}
cout << endl;
}return0;
}
C 班長競選
大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學。從圖中找出所有強連通分量進行縮點,...
kosaraju 班長競選
大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?本題有多組資料。第一...
week8 C 班長競選
大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?本題有多組資料。第一...