#include #include #include #include #include #include using namespace std; struct st { int c, p, r; int revd; bool operator < (const st & s) const { if(c!=s.c) return c>s.c; if(revd!=s.revd) return revd > s.revd; if(p!=s.p) return p>n && n) { vector > go[n], rev[n]; cin >> s >> t >> m; s--; t--; for(int i=0; i> a >> b; a--; b--; go[a].push_back(make_pair(b,i+1)); rev[b].push_back(make_pair(a,i+1)); } priority_queue q; q.push((st){0,s,0,0}); bool seen[2][1000+1]={{0}}; while(q.size()) { //cerr<<"q.size="<