zoukankan      html  css  js  c++  java
  • 1709. Penguin-Avia(并查集)

    1709

    简单题 并查集找下就行

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 using namespace std;
     8 #define LL long long
     9 int fa[110];
    10 int w[110][110],o[110][110];
    11 char s[110][110];
    12 int find(int x)
    13 {
    14     if(x!=fa[x])
    15     fa[x] = find(fa[x]);
    16     return fa[x];
    17 }
    18 int main()
    19 {
    20     int i,j,n,a,d;
    21     LL sum=0;
    22     scanf("%d",&n);
    23     scanf("%d%d%*c",&d,&a);
    24     for(i = 1; i <= n ; i++)
    25         fa[i] = i;
    26     for(i = 1; i <= n ; i++)
    27         for(j = 1; j <= n ; j++)
    28             cin>>s[i][j];
    29     for(i = 1 ;i <= n ; i++)
    30         for(j = i+1 ; j <= n ; j++)
    31         {
    32             if(s[i][j]=='1')
    33             {
    34                 int tx = find(i);
    35                 int ty = find(j);
    36                 if(tx==ty)
    37                 {
    38                     o[i][j] = 1;
    39                     o[j][i] = 1;
    40                     if(!w[i][j])
    41                     {
    42                         w[i][j] = w[j][i] = 1;
    43                         sum+=d;
    44                     }
    45                 }
    46                 else
    47                 fa[tx] = ty;
    48             }
    49         }
    50     int t = 0;
    51     for(i = 1 ;i <= n ; i++)
    52     {
    53         if(fa[i]==i)
    54         {
    55             if(t)
    56             {
    57                 o[t][i] = 2;
    58                 o[i][t] = 2;
    59                 if(!w[t][i])
    60                 {
    61                     w[t][i] = w[i][t] = 1;
    62                     sum+=a;
    63                 }
    64             }
    65             t = i;
    66         }
    67     }
    68     printf("%lld
    ",sum);
    69     for(i = 1; i <= n ; i++)
    70     {
    71        for(j = 1; j <= n ;j++)
    72         {
    73             if(o[i][j]==1)
    74             printf("d");
    75             else if(o[i][j]==2)
    76             printf("a");
    77             else
    78             printf("0");
    79         }
    80        puts("");
    81     }
    82     return 0;
    83 }
    View Code
  • 相关阅读:
    3个简单易懂的项目技巧
    使用HTML和CSS实现3D文字效果
    星巴克咖啡杯svg特效
    Web移动端实现自适应缩放界面的方法汇总
    javscript 闭包应用介绍
    pytest命令行传参
    vue7:父组件向子组件传值
    vue6:子组件向父组件传值
    vue5: is规避错误
    vue4:refs介绍
  • 原文地址:https://www.cnblogs.com/shangyu/p/3351790.html
Copyright © 2011-2022 走看看