可以發現,因為只能往東邊走,並且有入度為$0$的起點,因此這是乙個有向無環圖,可以進行拓撲排序,求出拓撲序列。
那麼我們要拓撲序列怎麼做呢?由於拓撲序列中,前面的點總是後面的點的前驅,因此可以進行dp。
而dp的狀態轉移方程也很明顯,這個城市只能由前面的城市轉移過來,因此有方程:$$dis[v]=max(dis[v],dis[u]+1)$$
#include#define n 100010
#define m 200010
using namespace std;
int n,m,cnt;
int deg[n],head[n],dis[n];
struct node edge[m];
void addedge(int u,int v) ;
head[u]=cnt;
deg[v]++;
return;
}void read()
return;
}void init()
return;
}void topo()
} while(!q.empty())
} }return;
}void print()
return;
}int main()
Luogu P1137 旅行計畫
小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。現在,你...
luoguP1137旅行計畫
小明要去乙個國家旅遊。這個國家有n個城市,編號為1至n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。現在,你...
P1137 旅行計畫
題目描述 小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多...