• 【CF】135 Div2 Choosing Capital for Treeland


    树形结构,挺有意思的题目。不难。

      1 /* 219D */
      2 #include <iostream>
      3 #include <string>
      4 #include <map>
      5 #include <queue>
      6 #include <set>
      7 #include <stack>
      8 #include <vector>
      9 #include <deque>
     10 #include <algorithm>
     11 #include <cstdio>
     12 #include <cmath>
     13 #include <ctime>
     14 #include <cstring>
     15 #include <climits>
     16 #include <cctype>
     17 #include <cassert>
     18 #include <functional>
     19 #include <iterator>
     20 #include <iomanip>
     21 using namespace std;
     22 //#pragma comment(linker,"/STACK:102400000,1024000")
     23 
     24 #define sti                set<int>
     25 #define stpii            set<pair<int, int> >
     26 #define mpii            map<int,int>
     27 #define vi                vector<int>
     28 #define pii                pair<int,int>
     29 #define vpii            vector<pair<int,int> >
     30 #define rep(i, a, n)     for (int i=a;i<n;++i)
     31 #define per(i, a, n)     for (int i=n-1;i>=a;--i)
     32 #define clr                clear
     33 #define pb                 push_back
     34 #define mp                 make_pair
     35 #define fir                first
     36 #define sec                second
     37 #define all(x)             (x).begin(),(x).end()
     38 #define SZ(x)             ((int)(x).size())
     39 #define lson            l, mid, rt<<1
     40 #define rson            mid+1, r, rt<<1|1
     41 
     42 const int maxn = 2e5+5;
     43 int D[maxn];
     44 int W[maxn], sw;
     45 int W_[maxn];
     46 vpii E[maxn];
     47 vi vc;
     48 int ans;
     49 int n;
     50 
     51 void dfs(int u, int fa, int w_, int d) {
     52     int v, w;
     53     
     54     D[u] = d;
     55     W_[u] = w_;
     56     rep(i, 0, SZ(E[u])) {
     57         v = E[u][i].fir;
     58         w = E[u][i].sec;
     59         if (v == fa)
     60             continue;
     61         dfs(v, u, w_+w, d+1);
     62         W[u] += W[v] + w;
     63     }
     64 }
     65 
     66 void solve() {
     67     // calculate w & c
     68     dfs(1, -1, 0, 0);
     69     ans = sw = W[1];
     70     vc.pb(1);
     71     
     72     // calculate the minimum cost
     73     int tmp;
     74     
     75     rep(i, 2, n+1) {
     76         tmp = sw - W_[i] + D[i] - W_[i];
     77         if (tmp == ans) {
     78             vc.pb(i);
     79         } else if (tmp < ans) {
     80             vc.clear();
     81             ans = tmp;
     82             vc.pb(i);
     83         }
     84     }
     85     
     86     printf("%d
    ", ans);
     87     rep(i, 0, SZ(vc))
     88         printf("%d ", vc[i]);
     89     putchar('
    ');
     90 }
     91     
     92 int main() {
     93     ios::sync_with_stdio(false);
     94     #ifndef ONLINE_JUDGE
     95         freopen("data.in", "r", stdin);
     96         freopen("data.out", "w", stdout);
     97     #endif
     98     
     99     int u, v;
    100     
    101     scanf("%d", &n);
    102     rep(i, 1, n) {
    103         scanf("%d %d", &u, &v);
    104         E[u].pb(mp(v, 0));
    105         E[v].pb(mp(u, 1));
    106     }
    107     
    108     solve();
    109     
    110     #ifndef ONLINE_JUDGE
    111         printf("time = %d.
    ", (int)clock());
    112     #endif
    113     
    114     return 0;
    115 }
  • 相关阅读:
    代理支持
    CGI
    SSI(服务器端嵌入)
    SSL/TLS 配置
    JSPs
    类加载机制
    JDBC 数据源
    安全管理
    Realm 配置
    Js将序列化成Json格式后日期(毫秒数)转成日期格式
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4623019.html
Copyright © 2020-2023  润新知