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 }
为何要逼自己长大,去闯不该闯的荒唐