Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#define pii pair
#define MAXN 100010 using namespace std; const int INF = 0x3f3f3f3f; vector
grafo[2*MAXN]; deque
dq; int dist[2*MAXN]; void bfs01(int s){ dq.push_front({s, 0}); dist[s] = 0; while(!dq.empty()){ pii v = dq.front(); dq.pop_front(); for(auto e : grafo[v.first]){ int viz = e.first; int w = e.second; if(dist[v.first]+w < dist[viz]){ dist[viz] = dist[v.first]+w; if(w == 1){ dq.push_back(e); } else{ dq.push_front(e); } } } } } int main(){ int n, k1, k2, p; scanf("%d %d %d %d", &n, &k1, &k2, &p); for(int i = 0; i < k1; i++){ int a, b; scanf("%d %d", &a, &b); grafo[2*a-1].push_back({2*b-1, 0}); grafo[2*b-1].push_back({2*a-1, 0}); } for(int i = 0; i < k2; i++){ int a, b; scanf("%d %d", &a, &b); grafo[2*a].push_back({2*b, 0}); grafo[2*b].push_back({2*a, 0}); } int ini, fim; scanf("%d %d", &ini, &fim); for(int i = 1; i <= 2*n; i+=2){ if(grafo[i].size() != 0 && grafo[i+1].size() != 0){ grafo[i].push_back({i+1, 1}); grafo[i+1].push_back({i, 1}); } } int resp1=INF, resp2=INF, resp; if(grafo[ini*2-1].size() != 0){ memset(dist, INF, sizeof dist); bfs01(ini*2-1); resp1 = min(dist[fim*2-1], dist[fim*2]); } if(grafo[ini*2].size() != 0){ memset(dist, INF, sizeof dist); bfs01(ini*2); resp2 = min(dist[fim*2-1], dist[fim*2]); } resp = min(resp1, resp2); if(resp == INF){ printf("-1"); return 0; } printf("%d", (resp+1)*p); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)