主要问题
- 数据量是n=10000, m = 10W,用SPFA也会超时(1W * 10W = 109,如果为1K*1W = 107则不会超时)
- 只能用O(n)复杂度的算法,DFS求连通分量可以使用tarjan算法套模板,最后算各分量n*(n-1)/2的总数(104)
解答
#include<bits/stdc++.h>
using namespace std;
const int MAX = 10000+5;
vector<int> graph[MAX];
stack<int> s;
int low[MAX],dfn[MAX],sccno[MAX];
vector<int> block[MAX];
int cnt;
int dfs_num;
void tarjan(int pos