10月28日 小X的液体混合

题目

     

分析

     正解是并查集+高精

      枚举加高精就好了

 

代码

    

 1 #include<iostream>
 2 #include<queue>
 3 using namespace std;
 4 bool map[1001][1001],flag[1001];
 5 int ans[1001];
 6 queue <int> q;
 7 int main ()
 8 {
 9     int n,m;
10     cin>>n>>m;
11     int a,b;
12     for (int i=1;i<=m;i++)
13     {
14         cin>>a>>b;
15         map[a][b]=1;
16         map[b][a]=1;
17         
18     }
19     ans[1000]=1;
20     for (int j=1;j<=n;j++)
21     {
22         if (flag[j]==0)
23         {
24             q.push(j);
25             flag[j]=1;
26         }
27         while (!q.empty())
28         {
29             int k=q.front();
30             q.pop();
31             for (int i=1;i<=n;i++)
32             {
33               if (map[k][i]==1&&flag[i]==0)
34               {
35                 int tt=0;
36                 for (int ii=1000;ii>=1;ii--)
37                 {
38                   ans[ii]=ans[ii]*2+tt;
39                   tt=ans[ii]/10;
40                   ans[ii]%=10;    
41                 }
42                 q.push(i);
43                 flag[i]=1;
44               }
45                 
46             }
47         }
48        }
49      int j=1;
50     while (ans[j]==0) j++;
51     for (int i=j;i<=1000;i++)
52       cout<<ans[i];
53 }

 

posted @ 2018-10-27 14:46  Melted_czj  阅读(173)  评论(0编辑  收藏  举报
body { background-color:whitesmoke; } // 修改背景颜色为半透明 #home,#sideBarMain>div,#blog-sidecolumn>div>div,.catListView{ background-color:rgba(255,255,255,0); } // 修改其他边框的颜色