小明要去乙個國家旅遊。這個國家有n個城市,編號為1~n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。
所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。
現在,你只知道每一條道路所連線的兩個城市的相對位置關係,但並不知道所有城市具體的位置。現在對於所有的i,都需要你為小明制定一條路線,並求出以城市i為終點最多能夠遊覽多少個城市。
輸入格式:
輸入的第1行為兩個正整數n, m。
接下來m行,每行兩個正整數x, y,表示了有一條連線城市x與城市y的道路,保證了城市x在城市y西面。
輸出格式:
輸出包括n行,第i行包含乙個正整數,表示以第i個城市為終點最多能遊覽多少個城市。
輸入樣例#1:
5 61 21 3
2 32 4
3 42 5
輸出樣例#1:
12343
均選擇從城市1出發可以得到以上答案。
對於20%的資料,n ≤ 100;
對於60%的資料,n ≤ 1000;
對於100%的資料,n ≤ 100000,m ≤ 200000。
(wa)1 #include2 #include3 #include4 #include5
6using
namespace
std;
7const
int n=1001;8
9struct
node;
12node e[n];
13int
head[n];
14int
ans[n];
15int
rd[n];
16int now=1
;17 queueq;
18int
t;19
intn,m;
20int
answer;
21int flag=1;22
23void add(int u,int
v)24
3031
void
topsort()
3241}42
while
(q.empty())
4356}57
}58}59
60void
redayac()
6166}67
68int
main()
6976
for(int i=1;i<=m;i++)
7783
topsort();
84redayac();
85 }
犯了個小錯誤,上**39行不能break;why,吾吧;
呈上ac**
#include#include#include
#include
using
namespace
std;
const
int n=2000001
;struct
node;
node e[n];
inthead[n];
intans[n];
intrd[n];
int now=1
;queue
q;intt;
intn,m;
intanswer;
int flag=1
;void add(int u,int
v)void
topsort()
}while(!q.empty())}}
}void
redayac()
}int
main()
for(int i=1;i<=m;i++)
topsort();
redayac();
}
P1137 旅行計畫
題目描述 小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多...
P1137 旅行計畫
小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。現在,你...
P1137 旅行計畫
p1137 旅行計畫 題目描述 小明要去乙個國家旅遊。這個國家有n個城市,編號為1至n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下...