• bzoj 1369: [Baltic2003]Gem


    确实是神2333333333,一开始以为是01染色sb题,然而被打脸。。。

    (蒟蒻不乱说,网上各种神犇的题解,还有图!!)

     1 #include <bits/stdc++.h>
     2 #define LL long long
     3 #define lowbit(x) x&(-x)
     4 #define inf 0x3f3f3f3f
     5 using namespace std;
     6 inline int ra()
     7 {
     8     int x=0,f=1; char ch=getchar();
     9     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    10     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    11     return x*f;
    12 }
    13 int n,cnt;
    14 int head[10005],f[10005][25];
    15 struct edge{
    16     int to,next;
    17 }e[20005];
    18 void insert(int x, int y)
    19 {
    20     e[++cnt].next=head[x]; e[cnt].to=y; head[x]=cnt;
    21 }
    22 void dfs(int x, int fa)
    23 {
    24     for (int i=1; i<=20; i++)
    25         f[x][i]=i;
    26     for (int i=head[x];i;i=e[i].next)
    27         if (e[i].to!=fa) dfs(e[i].to,x);
    28     for (int j=1; j<=20; j++)
    29     {
    30         for (int i=head[x];i;i=e[i].next)
    31             if (e[i].to!=fa)
    32             {
    33                 int mn=inf;
    34                 for (int k=1; k<=20; k++)
    35                     if (j!=k) mn=min(mn,f[e[i].to][k]);
    36                 f[x][j]+=mn;
    37             }
    38     }
    39 }
    40 int main(int argc, char const *argv[])
    41 {
    42     n=ra();
    43     for (int i=1; i<n; i++)
    44     {
    45         int x=ra(),y=ra();
    46         insert(x,y); insert(y,x);
    47     }
    48     dfs(1,0);
    49     int ans=inf;
    50     for (int j=1; j<=20; j++)    
    51         ans=min(ans,f[1][j]);
    52     cout<<ans;
    53     return 0;
    54 }
  • 相关阅读:
    bus总线
    vue 动态组件、父子组件传参
    echarts
    记录板
    留言板
    如何移除双系统mac中的windows系统
    Kernel,Shell,Bash 的关系
    zju 校队选拔 被虐记
    COGS 2638. 数列操作ψ 线段树
    退役公告【现已复活】
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6511915.html
Copyright © 2020-2023  润新知