P1983 車站分級

2022-04-12 03:20:46 字數 1092 閱讀 7215

題解

其實這道題可以跑乙個拓撲排序

我們看這些這車站,沿途停過的車站一定比未停的車站級別高

所以我們想到:

未停靠的車站向已經停靠的車站連一條邊,入度為0的車站級別就是1啦

然後我們把入度為0的邊依次取出來,那麼它的出邊所指車站就一定比這個車站級別高

那麼也就是說,乙個車站的級別一定比所有指向它的車站中,級別最高的那個車站級別還要高1級

注意

a[ ]  暫時儲存每一趟車站

flag[ ] 暫時判斷每個車站停不停

vis[ ][ ] 防止建重邊

由於可能會建很多邊,所以拓撲排序中與邊有關的陣列一定要開大

注意看這裡

也就是說,不一定每個車站都要從頭開到尾,起止點不一定

**

#includeusing

namespace

std;

const

int da=4000020

;const

int maxn=10005

;int

n,m,k;

int head[maxn],nxxt[da],in[maxn],to[da],cnt=0

;int ji[maxn],ans=0

,a[maxn];

bool

vis[maxn][maxn],flag[maxn];

void add(int start,int

end)

intmain()

for(int j=a[1];j<=a[k];j++)}}

}}priority_queue

,greater >q;

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

}while(!q.empty())

}printf(

"%d\n

",ans);

return0;

}

P1983 車站分級

一條單向的鐵路線上,依次有編號為 1,2,n1,2,n的 nn個火車站。每個火車站都有乙個級別,最低為 11 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 xx,則始發站 終點站之間所有級別大於等於火車站xx 的都必須停靠。注意 起始站和終點站自然也算作事先已知...

P1983 車站分級

題意 如果標號為x的站點有車停靠,那麼出發點到終點站的所有大於等於x的等級的站點都需要停靠,問最少需要多少個等級的站點 做法 如果某個點沒有車停靠,說明這個點的等級小於其他所有有車停靠的站點等級,於是連邊,最後跑一邊拓撲,求最大深度 一開始理解錯題意了,誤以為是從該點到終點站而不是出發點到終點站,於...

P1983 車站分級

傳送門 這道題有拓撲排序的思想,題目中給出級別大於或者等於的火車站都得停下來。換言之沒有停下來的等級就是比他小,我們要求出最大的層數。求層數也有點像bfs了 include using namespace std const int maxn 1e3 10 int e maxn maxn int r...