Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <set>
- #include <queue>
- #include <algorithm>
- #include <string>
- #include <cmath>
- #include <cstdio>
- #include <iomanip>
- #include <fstream>
- #include <cassert>
- #include <cstring>
- #include <unordered_set>
- #include <unordered_map>
- #include <numeric>
- #include <ctime>
- #include <bitset>
- #include <complex>
- using namespace std;
- typedef long long ll;
- signed main() {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int n;
- cin >> n;
- vector<int> in(n);
- vector<int> out(n);
- vector<vector<int>> g(n);
- vector<vector<int>> g_in(n);
- int m;
- cin >> m;
- for (int i = 0; i < m; i++) {
- int a, b;
- cin >> a >> b;
- a--;
- b--;
- in[min(a, b)]++;
- out[max(a, b)]++;
- g[a].push_back(b);
- g[b].push_back(a);
- g_in[min(a, b)].push_back(max(a, b));
- }
- ll ans = 0;
- for (int i = 0; i < n; i++) {
- ans += (ll)in[i] * out[i];
- }
- cout << ans << '\n';
- int q;
- cin >> q;
- int cnt = 1;
- while (q--) {
- int v;
- cin >> v;
- v--;
- ans -= in[v] * out[v];
- for (auto t : g_in[v]) {
- g_in[t].push_back(v);
- ans += (-in[t] + out[t] - 1);
- in[t]++;
- out[t]--;
- }
- g_in[v].clear();
- cnt++;
- in[v] = 0;
- out[v] = (int)g[v].size();
- cout << ans << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement