題意: 如果標號為x的站點有車停靠,那麼出發點到終點站的所有大於等於x的等級的站點都需要停靠,問最少需要多少個等級的站點
做法: 如果某個點沒有車停靠,說明這個點的等級小於其他所有有車停靠的站點等級,於是連邊,最後跑一邊拓撲,求最大深度
一開始理解錯題意了,誤以為是從該點到終點站而不是出發點到終點站,於是wa到自閉,連了一萬次邊…
**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define pb push_back
#define rep(x,a,b) for (int x=a;x<=b;x++)
#define repp(x,a,b) for (int x=a;x#define w(x) printf("%d\n",x)
#define ww(x) printf("%lld\n",x)
#define pi 3.14159265358979323846
#define mem(a,x) memset(a,x,sizeof a)
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
using namespace std;
const
int maxn=
1e3+7;
const
int inf=
1e9;
const ll inff=
1e18
;int n,m,t,x[maxn]
,d[maxn]
,ans=
1,ok[maxn]
[maxn]
;vector<
int> e[maxn]
;typedef pair<
int,
int> p;
queueq;int
main()
rep(k,x[1]
+1,x[t]-1
)}}}
rep(i,
1,n)
if(d[i]==0
)q.push
(make_pair
(i,1))
;while
(!q.
empty()
)}}w
(ans)
;return0;
}
P1983 車站分級
一條單向的鐵路線上,依次有編號為 1,2,n1,2,n的 nn個火車站。每個火車站都有乙個級別,最低為 11 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 xx,則始發站 終點站之間所有級別大於等於火車站xx 的都必須停靠。注意 起始站和終點站自然也算作事先已知...
P1983 車站分級
傳送門 這道題有拓撲排序的思想,題目中給出級別大於或者等於的火車站都得停下來。換言之沒有停下來的等級就是比他小,我們要求出最大的層數。求層數也有點像bfs了 include using namespace std const int maxn 1e3 10 int e maxn maxn int r...
P1983 車站分級
題目戳這 因為等級大於等於所經過的站點的等級的站點都必須出現在途中,所以沒經過的站點等 級小於出現在途中的站點的等級,所以可以給這些站點分級 include include include using namespace std int n,m,ans,stop 1005 s,tp 1005 100...