洛谷P1137 旅行計畫(拓撲排序 dp)

2021-08-03 04:45:22 字數 693 閱讀 3201

題目描述

小明要去乙個國家旅遊。這個國家有n個城市,編號為1~n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。

所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。

現在,你只知道每一條道路所連線的兩個城市的相對位置關係,但並不知道所有城市具體的位置。現在對於所有的i,都需要你為小明制定一條路線,並求出以城市i為終點最多能夠遊覽多少個城市。

分析:邊拓撲排序邊dp,具體方程看**。

**

#include 

#include

#include

using

namespace

std;

queue

q;int x[300000],y[300000],ls[300000],nex[300000],ans[200000],d[300000];

int n,m,l,r;

int main()

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

if (d[i]==0)

while (!q.empty())

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

printf("%d\n",ans[i])

;}

洛谷 P1137 旅行計畫 (拓撲排序 dp)

在dag中,拓撲排序可以確定dp的順序 把圖的資訊轉化到乙個拓撲序上 注意轉移的時候要用邊轉移 這道題的dp是用刷表法 include define rep i,a,b for register int i a i b i define for i,a,b for register int i a ...

P1137 旅行計畫 拓撲排序

p1137 旅行計畫 小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽...

P1137 旅行計畫 拓撲排序

小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。現在,你...