鄰接表DFS 最長鏈和最大環

2022-06-04 02:42:09 字數 2336 閱讀 7066

(最大環)

(最長鏈)

兩道題,都用的鄰接表,這個鄰接表上次也說過了,figo教的,next為邊記憶體池吧。。下標和dest與dist對應。最長鏈就是dfs找到最長的,最深的(dfs每乙個點,但是我dfs學的不好,不知道有沒有更好的方法,找最大環的時候我剛開始還是用dfs每個點的方法,但是gg了,所以我就研究了一下別人的**,後來發現不用dfs每乙個頂點,只要出現了,dfs條件!vis[i]不滿足的情況就說明有環出現,所以只要記錄一下子就行了。哦也。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define rep(i,n,m) for(int i=(n);i<=(m);++i)

#define re1(i,n) rep(i,1,n)

#define re0(i,n) rep(i,0,n)

#define re(a) ((a)*(a))

#define size(a) (int((a).size()))

#define vi vector

#define vl vector

#define vs vector

//time count distance 不能用哦,已經定義了。

using

namespace std;

typedef long

long ll;

template

void inline maxi(t &a,const t &b)

template

void inline mini(t &a,const t &b)

template

void show(const t &a,int n,int m)

const

int maxnum=2000+1;

const

int maxint=2147483647;

vi g,next,dist,dest,path,d;

vector vis;

void addd(int

from,int to,int dis=1)

int timee,n;

void init()

vis.assign(maxnum,false);

path.assign(maxnum,-1);

d.assign(maxnum,-1);

}void dfs(int s)}}

/*int findp(int from,int to)

void print_path(int from,int to)

coutif(findp(5,6)!=-1)else

cout<<"gg"<*/}

#define codeforces codeforces

//#define input codeforces_file

//#define many_test codeforces_many_test

int main()

template

void inline mini(t &a,const t &b)

template

void fill(t &a,p v)

void shownum(int n,int m)

void init()

}void findl(int s,int time)else}}

int mmain()

printf("

%d\n

",ans+1);}}

//#define codeforces codeforces

//#define input codeforces_file

//#define many_test codeforces_many_test

int main(){

#ifdef codeforces

#ifdef input

freopen("

input.txt

","r

",stdin);

freopen("

output.txt

","w

",stdout);

#endif

#ifdef many_test

re1(wwwwwwwwwwwwwwwwwwwww,3)

mmain();

return

0;#endif

#endif

mmain();

用鄰接鍊錶實現BFS演算法和DFS演算法

如下 link graph.h檔案 用鄰接鍊錶來表示圖,並實現廣度優先搜尋演算法 和深度優先搜尋演算法 ifndef link graph h define link graph h include include include using namespace std 定義三種顏色 define ...

鄰接鍊錶的BFS和DFS(簡明版)

include include include include using namespace std const int maxsize 10 int visited maxsize 定義訪問陣列 struct arcnode 定義邊表 struct vertexnode 定義頂點表頭 class...

鄰接表的深度搜尋 DFS 和廣度搜尋 BFS

圖是一種比樹更複雜的資料結構,常見的遍歷方式無非兩種 深度搜尋 優先深度掃瞄,如果當前路徑走到了死胡同,那麼,又依次訪問上次訪問過的節點的可走路徑。就這樣如此往復,最終完成圖的遍歷。深度搜尋類似於樹的前序遍歷 廣度搜尋 優先廣度掃瞄,假設你前面現在有n條路可走,ab n,那麼先把ab n的所有節點訪...