2020牛客寒假演算法基礎集訓營6 B題

2021-10-02 21:30:22 字數 1240 閱讀 9967

現在有乙個n個點的有向圖,每個點僅有一條出邊

你需要求出圖中最長的簡單路徑包含點的數量(1≤n≤1,000,000)

輸入描述:

第一行乙個數字n

接下來n行,每行乙個正整數,第i+1行的數字表示第i個點出邊終點的編號

(點從1開始標號)

輸出描述:

一行乙個數字,最長的簡單路徑的長度

這道題就是先拓撲排序求出各個點的(其實就是支鏈)最長長度,然後拓撲沒有遍歷到的點也就是環上的點,找出這些點在遍歷一遍,找出環上的點能連線的最長長度和環的大小,

為啥要遍歷所有沒有遍歷的點,因為這題的圖可以是不連通的,也就是說可以有多個環;

**:

#include

#define ll long long

#define pa pair

#define lson k<<1

#define rson k<<1|1

#define inf 0x3f3f3f3f

//ios::sync_with_stdio(false);

using

namespace std;

const

int n=

1000100

;const

int m=

1000100

;const ll mod=

998244353

;int in[n]

;int n;

struct nodeedge[n*2]

;int head[n]

;int cnt;

void

add(

int p,

int q)

int dp[n]

;queue<

int>qu;

bool vis[n]

;void

bfs()}

}int sum,mmax;

bool f[n]

;void

dfs(

int p)

}int

main()

for(

int i=

1;i<=n;i++

)bfs()

;int ans=0;

for(

int i=

1;i<=n;i++)}

cout

}

2020牛客寒假演算法基礎集訓營

長期更新,補完為止 2 g 判正誤 題意 t組資料。判斷a d b e c f是否等於g。1e9 a,b,c,g 1e9,0 d,e,f 1e9。保證不會出現指數和底數同為 0 的情況。思路 硬算會tle或mle。快速冪取模,為了增加過題概率,多取幾個模數判斷。includeusing namesp...

2020牛客寒假演算法基礎集訓營1

找規律,推公式 三角形個數為2 m n m n m 1 n 1 2 m n mn m 1 n 1 2 m n mn m 1 n 1 include include include include using namespace std typedef long long ll const int m...

2020牛客寒假演算法基礎集訓營1

h題 突然發現h題可以用好多種方法做的。方法一 雙指標,維護乙個修改次數小於等於k的區間 include using namespace std typedef long long ll const int mod 1e9 7 const int n 1e5 5 const int inf 0x3f...