Advertisement
Saleh127

UVA 657

Jul 6th, 2021
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. //#define endl "\n"
  5. #define test int t; cin>>t; for(int cs=1;cs<=t;cs++)
  6. bool v[100][100];
  7. char a[100][100];
  8. ll n,m,cnt=0;
  9.  
  10. bool valid(ll i,ll j)
  11. {
  12. if(i<0 || i>=n || j<0 || j>=m || v[i][j]!=0 || a[i][j]!='X') return 0;
  13. return 1;
  14. }
  15.  
  16. void dicecheck(ll i,ll j)
  17. {
  18. v[i][j]=1;
  19.  
  20. if(valid(i,j+1)) dicecheck(i,j+1);
  21. if(valid(i,j-1)) dicecheck(i,j-1);
  22. if(valid(i+1,j)) dicecheck(i+1,j);
  23. if(valid(i-1,j)) dicecheck(i-1,j);
  24.  
  25. }
  26.  
  27. bool valid1(ll i,ll j)
  28. {
  29. if(i<0 || i>=n || j<0 || j>=m || v[i][j]!=0 || a[i][j]=='.') return 0;
  30. return 1;
  31. }
  32.  
  33. void dfs(ll i,ll j)
  34. {
  35.  
  36. v[i][j]=1;
  37.  
  38. if(a[i][j]=='X')
  39. {
  40. cnt++;
  41. dicecheck(i,j);
  42. }
  43.  
  44. if(valid1(i,j+1)) dfs(i,j+1);
  45. if(valid1(i,j-1)) dfs(i,j-1);
  46. if(valid1(i+1,j)) dfs(i+1,j);
  47. if(valid1(i-1,j)) dfs(i-1,j);
  48. }
  49.  
  50. int main()
  51. {
  52. ios_base::sync_with_stdio(0);
  53. cin.tie(0);cout.tie(0);
  54.  
  55. ll i,j,k,l,tt=0;
  56.  
  57. while(cin>>n>>m)
  58. {
  59. if(n==0 || m==0) break;
  60.  
  61. swap(n,m);
  62.  
  63. memset(v,0,sizeof v);
  64.  
  65. for(i=0;i<n;i++)
  66. {
  67. for(j=0;j<m;j++)
  68. {
  69. cin>>a[i][j];
  70. }
  71. }
  72.  
  73. vector<ll>x;
  74.  
  75. for(i=0;i<n;i++)
  76. {
  77. for(j=0;j<m;j++)
  78. {
  79. if(a[i][j]!='.' && v[i][j]==0)
  80. {
  81. cnt=0;
  82.  
  83. dfs(i,j);
  84.  
  85. if(cnt>=1 && cnt<=6) x.push_back(cnt);
  86. }
  87. }
  88. }
  89.  
  90. cout<<"Throw "<<++tt<<endl;
  91.  
  92. sort(x.begin(),x.end());
  93.  
  94. for(i=0;i<x.size();i++)
  95. {
  96. cout<<x[i];
  97. if(i!=x.size()-1) cout<<" ";
  98. }
  99.  
  100. cout<<endl<<endl;
  101.  
  102. }
  103.  
  104. return 0;
  105. }
  106.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement