刚学 其实操作很简单 正向建立一个图 跑一遍 标记上时间 然后反过来再跑一遍(注意有可能区域不联通) 标记mark
Korasaju algorithm
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
int vis[300];
int edge[300][300];
int tedge[300][300];
int mark[300];
int n,m;
int cnt=0;
int flag=0;
int now[300];
int nex[300];
int x=1;
void dfs(int start)
{
for(int i=1;i<=n;i++)
{
if(i!=start&&!vis[i]&&edge[start][i])
{vis[i]=1;now[i]=++cnt;dfs(i);nex[i]=++cnt;}
// cout<<start<<'
版权声明:本文为qq_34271269原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。