题目链接:
https://www.luogu.org/problem/P4306
提醒:
1:说明:洛谷这道题的测试点,在此时此刻比较水,第一遍写了一个spfa,跑了一个最长路也ac了
思路
1:tarjan缩点,把每一个强连通分量看作一个节点建图
2:对每一个原始节点,取color[i]跑bfs,然后相加即可,该题比较基础
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e3+1;
vector<int>e[maxn];
set<int>ee[maxn];
int dfn[maxn],low[maxn],ins[maxn],color[maxn],colornum[maxn],timing,cnt,n,num;
string a;
stack<int>s;
vector<pair<int,int> >mapp[maxn];
int ing[maxn];
void tarjan(int x)
{
low[x]=dfn[x]=++timing;
s.push(x);
ins[x]=1;
for(int i=0;i<e[x].size();i++)
{
int v=e[x][i];
if(!dfn[v])
{
tarjan(v);
low[x]=min(low[x],