题意:
给你n个点每个点修建警察局的cost
对于这张图来说,与警察局在同一强联通分量里的每个点都可以被这个警察局照看 问你最小cost以及当前cost的方案数
思路:
tarjan模板题~~~ (特别鸣谢磊酱的倾情授课ლ(°◕‵ƹ′◕ლ))
tarjan:https://www.cnblogs.com/yanyiming10243247/p/9294160.html
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
const int MaxN = 1e5 + 5;
typedef long long LL;
const LL mod = 1e9 + 7;
int w[MaxN],stack[MaxN],dfn[MaxN],low[MaxN],col[MaxN];
int n,m,cnt = 0,Top = 0,haha = 0;
bool vis[MaxN];
vector<int> G[MaxN],E[MaxN];
void tarjan(int u){
dfn[u] = ++cnt;
low[u] = dfn[u];
stack[++Top] = u;
vis[u] = 1;//在stack里
int len = G[u].size();
for(