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\n",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

 

你可能感兴趣的:(GUI)