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
原文地址:https://www.cnblogs.com/shangyu/p/3351790.html