打开洛谷题目第一件事,看标签,好,图论,考虑怎样建图
看到题目,经分析,每次停靠的站点必定大于没有停靠的站点,经过输入的几次列车,我们便可以得出他们的关系,这时候,我们就要用到图论了
建立一条有向边,从大的指向小的我们可以这样实现:
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
for(int i=1;i<=n*2;i++)
vis[i]=0;
int s;
cin>>s;
for(int j=1;j<=s;j++)
{
cin>>a[j];
vis[a[j]]=1;
}
for(int j=a[1];j<=a[s];j++)
{
if(!vis[j])
for(int k=1;k<=s;k++)
g[a[k]].push_back(j);
}
}
样例二
举个例子 由图得,1>6>2
由此我们看出,从入度为0的点开始,每一层的等级都需要+1,由此我们不难想到拓扑排序
设入度为0的点等级为1,每下一层等级就要加1,最后遍历一遍全部点,求出最大的等级即可
#include<iostream>
#include<vector>
#