luogu P1983 車站分級 題解

2022-05-05 21:15:09 字數 1006 閱讀 1606

符合了noip命題的特點,知識點不難,思維量是有的。

step1:把題讀進去,理解。得到 非停靠點的等級 < 停靠點的等級

step2:把上述不等關係轉化為有向圖。即由非停靠點向停靠點連一條邊

step3:對於每個入度為零的點dfs找最長路。取其max

step4:輸出max+1

code:

#include #include #include #include #include using namespace std;

const int maxn = 500010;

int n, m, answer = -1e9, a[1010], start[1010], rudu[1010];

bool flag[1010];

struct edgee[maxn<<2];

int cnt, head[maxn];

int dis[1010];

bool vis[1010], used[1010][1010];

void add(int u, int v, int w)

int spfa(int s)

}} }

for(int i = 1; i <= n; i++)

if(dis[i] != 1e9) ans = max(dis[i], ans);

return ans;

}int main()

for(int j = a[1]; j <= a[k]; j++)

}} }//build graph

int tot = 0;

for(int i = 1; i <= n; i++)

if(rudu[i] == 0) start[++tot] = i;

for(int i = 1; i <= tot; i++)

answer = max(answer, spfa(start[i]));

printf("%d",answer+1);

}

luogu P1983 車站分級

題目描述 一條單向的鐵路線上,依次有編號為 1,2,n 的 n 個火車站。每個火車站都有乙個級別,最低為 1 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 x,則始發站 終點站之間所有級別大於等於火車站 x 的都必須停靠。注意 起始站和終點站自然也算作事先已知需...

luogu p1983 車站分級

傳送門 一條單向的鐵路線上,依次有編號為 1,2,n 的 n 個火車站。每個火車站都有乙個級別,最低為 1 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 x 則始發站 終點站之間所有級別大於等於火車站 x 的都必須停靠。注意 起始站和終點站自然也算作事先已知需要...

luogu p1983 車站分級

傳送門 一條單向的鐵路線上,依次有編號為 1,2,n 的 n 個火車站。每個火車站都有乙個級別,最低為 1 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 x 則始發站 終點站之間所有級別大於等於火車站 x 的都必須停靠。注意 起始站和終點站自然也算作事先已知需要...