u114 旅行計畫 12月你好

2021-09-28 09:56:55 字數 2124 閱讀 1805

time limit: 1 second

memory limit: 128 mb

【問題描述】

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

【輸入格式】

輸入檔案plan.in的第1行為兩個正整數n, m。 接下來m行,每行兩個正整數x, y,表示了有一條連線城市x與城市y的道路,保證了城市x在城市y西面。

【輸出格式】

輸出檔案plan.out包括n行,第i行包含乙個正整數,表示以第i個城市為終點最多能遊覽多少個城市。

【資料規模】

對於20%的資料,n ≤ 100; 對於60%的資料,n ≤ 1000; 對於100%的資料,n ≤ 100000,m ≤ 200000。

sample input1

5 6

1 2

1 3

2 3

2 4

3 4

2 5sample output1

1 2

3 4

3【樣例說明】

均選擇從城市1出發可以得到以上答案。

【題目鏈結】:

【題解】

設f[i]為以i作為終點最多能訪問的城市個數;

因為有從西到東的規律(只能向東走);所以先找出最西邊的那些點(入度為0的點);

從那些點開始進行拓撲排序;在進行拓撲排序的時候進行dp搞一搞就可以了;

因為是最西邊的點,所以從那些點開始、最後一定能搞到所有點的正確答案(經過的城市最多);

寫記蒐會爆棧、而且不知道怎麼回事。。

【完整**】

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define ll long long

#define rep1(i,a,b) for (int i = a;i <= b;i++)

#define rep2(i,a,b) for (int i = a;i >= b;i--)

#define mp make_pair

#define pb push_back

#define fi first

#define se second

typedef pair pii;

typedef pairpll;

void rel(ll &r)

void rei(int &r)

const

int maxn = 1e5+100;

const

int maxm = 2e5+100;

const

int dx[9] = ;

const

int dy[9] = ;

const

double pi = acos(-1.0);

int n,m;

int f[maxn],du[maxn];

queue

dl;

vector

g[maxn];

int main()

rep1(i,1,n)

if (du[i]==0)

while (!dl.empty())}}

rep1(i,1,n)

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

return

0;}

P1137 旅行計畫

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

洛谷1137 旅行計畫

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

P1137 旅行計畫

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