fork(1) download
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<utility>
  6. #include<algorithm>
  7. #include<iomanip>
  8. #include<functional>
  9. #include<limits>
  10. #include<memory>
  11. #include<cstdlib>
  12. #include<cassert>
  13. #include<cctype>
  14. #include<cfloat>
  15. #include<stack>
  16. #include<queue>
  17. #include<deque>
  18. #include<iterator>
  19. #include<list>
  20. #include<vector>
  21. #include<map>
  22. #include<set>
  23. #include<numeric>
  24. #include<ctime>
  25. #include<sstream>
  26.  
  27. using namespace std;
  28.  
  29. // ***COMMONLY USED MACROS***
  30. #define MOD 1000000007
  31. #define pb push_back
  32. #define pob pop_back
  33. #define pf push_front
  34. #define pof pop_front
  35. #define mp make_pair
  36. #define minr min_element
  37. #define maxr max_element
  38. #define mh make_heap
  39. #define ph push_heap
  40. #define poh pop_heap
  41. #define Sd(n) scanf("%d",&n)
  42. #define Pd(n) printf("%d\n",n)
  43. #define Sld(n) scanf("%lld",&n)
  44. #define Pld printf("%lld\n",n)
  45. #define Ss(s) scanf("%s\n",s)
  46. #define Ps(s) printf("%s\n",s)
  47. #define forn(i,n) for(int i=0;i<int(n);i++)
  48. #define ford(i,n) for(int i=int(n);i>=0;i--)
  49. #define all(a) a.begin(),a.end()
  50. #define set(a,x) memset(a,x,sizeof(a))
  51. #define mod 10000007
  52. // ***FEW TYPEDEFINES**
  53. typedef unsigned long long int uint64;
  54. typedef long long int int64;
  55. typedef pair<int64,int64> pii;
  56.  
  57. const long double pi = 3.1415926535897932384626433832795;
  58. const long double eps = 1e-9;
  59. string s[1001];
  60. int vis[1001][1001];
  61. int dfs(int i,int j){
  62. vis[i][j]=1;
  63. switch(s[i][j]){
  64. case 'N':
  65. if(vis[i-1][j]==0)
  66. dfs(i-1,j);
  67. break;
  68. case 'S':
  69. if(vis[i+1][j]==0)
  70. dfs(i+1,j);
  71. break;
  72. case 'W':
  73. if(vis[i][j-1]==0)
  74. dfs(i,j-1);
  75. break;
  76. case 'E':
  77. if(vis[i][j+1]==0)
  78. dfs(i,j+1);
  79. break;
  80. }
  81. }
  82. int main(){
  83. int n,m,i,j,ans=0;
  84. cin>>n>>m;
  85. for(i=0;i<n;i++)
  86. cin>>s[i];
  87. for(i=0;i<n;i++){
  88. for(j=0;j<m;j++){
  89. if(vis[i][j]==0){
  90. dfs(i,j);
  91. ans++;
  92. }
  93. }
  94. }
  95. cout<<ans<<endl;
  96. return 0;
  97. }
  98.  
Success #stdin #stdout 0s 6780KB
stdin
3 4
SWWW
SEWN
EEEN
stdout
2