符合了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 的都必須停靠。注意 起始站和終點站自然也算作事先已知需要...