https://codeforces.com/group/5yyKg9gx7m/contest/280318/problem/G
题意:带权有向图,权各不相同,求s到t字典序最小的路径,若长度超过1e6输出过长即可。
思路:权各不相同,所以每次贪心走权最小的并且可以到达t的,因此,先逆边dfs求出每个点是否可达t,然后再从s开始dfs一次,遇到相同结点就是过长,先到达t就输出路径。
#include<bits/stdc++.h>
using namespace std;
const int maxn=100000+100;
typedef pair<int,int> P;
typedef long long ll;
#define MP(a,b) make_pair(a,b)
int n,m,s,t,vis[maxn],vis2[maxn];
vector<P> G[maxn];
vector<int> G2[maxn],path;
bool cmp(P a,P b)