Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define IO ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
- const long long N = 2e3 + 5, MOD = 1e9 + 7, OO = 1e18;
- const double PI = acos(-1);
- const int dx[4] = {0, 0, 1, -1};
- const int dy[4] = {1, -1, 0, 0};
- long long n, m, s, t, u, v;
- vector<long long>g[N];
- pair<long long, long long>sd[N];
- bool vis[N][N];
- pair<long long, long long> bfs(long long x) {
- bool used[n + 1] = {};
- pair<long long, long long>ret = {0, 0};
- queue<long long>q;
- q.push(x);
- used[x] = 1;
- int l = 1, rep;
- while (rep = q.size()) {
- while (rep--) {
- long long y = q.front();
- q.pop();
- for (auto z : g[y])
- if (!used[z]) {
- q.push(z);
- used[z] = 1;
- if (z == s)ret.first = l;
- else if (z == t)ret.second = l;
- if (used[s] && used[t])return ret;
- }
- }
- l++;
- }
- return {0, 0};
- }
- int main() {
- IO
- cin >> n >> m >> s >> t;
- for (int i = 1; i <= m; i++) {
- cin >> u >> v;
- g[u].push_back(v);
- g[v].push_back(u);
- vis[u][v] = vis[v][u] = 1;
- }
- long long ans = 0;
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= n; j++) {
- if (i == j || vis[i][j])continue;
- vis[i][j] = vis[j][i] = 1;
- long long c1 = sd[i].first + sd[j].second + 1;
- long long c2 = sd[i].second + sd[j].first + 1;
- ans += (min(c1, c2) <= sd[s].second);
- }
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment