fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. void allConnected1(int** edges, int n, int sv, bool* visited, vector<int>* smallOutput) {
  6.  
  7. visited[sv]=true;
  8. smallOutput->push_back(sv);
  9. //vector<int>* smallOutput1=new vector<int>();
  10. for ( int i=0; i<n; i++ ) {
  11. if ( i==sv ) {
  12. continue;
  13. }
  14. if ( edges[sv][i]==1 && !visited[i] ) {
  15. allConnected1(edges, i, sv, visited, smallOutput);
  16. }
  17.  
  18. }
  19. }
  20.  
  21. vector<vector<int>*>* allConnected(int** edges, int n, int sv, bool* visited, vector<vector<int>*>* output) {
  22.  
  23. for ( int i=0; i<n; i++ ) {
  24. if ( visited[i] != false ) {
  25. vector<int>* smallOutput=new vector<int> ();
  26. allConnected1(edges, n, i, visited, smallOutput);
  27. output->push_back(smallOutput);
  28. }
  29. }
  30. return output;
  31. }
  32.  
  33. int main()
  34. {
  35. int V, E, tempX, tempY;
  36. cin >> V >> E;
  37.  
  38. int**edges=new int*[V];
  39. for ( int i=0; i<V; i++ ) {
  40. edges[i]=new int[V];
  41. for ( int j=0; j<V; j++ ) {
  42. edges[i][j]=0;
  43. }
  44. }
  45.  
  46. for ( int i=0; i<E; i++ ) {
  47. int f,s;
  48. cin>>f>>s;
  49. edges[f][s]=1;
  50. edges[s][f]=1;
  51. }
  52.  
  53. bool* visited=new bool[V];
  54. for ( int i=0; i<V; i++ ) {
  55. visited[i]=false;
  56. }
  57.  
  58. vector<vector<int>*>* output=new vector <vector<int>*> ();
  59. vector<vector<int>*>* result=allConnected(edges, V, 0, visited, output);
  60. for ( int i=0; i<result->size(); i++ ) {
  61. vector<int>* result1=result->at(i);
  62. for ( int j=0; j<result1->size(); j++ ) {
  63. cout<<result1->at(j)<<" ";
  64. }
  65. cout<<endl;
  66.  
  67. }
  68.  
  69.  
  70. return 0;
  71. }
Time limit exceeded #stdin #stdout 5s 8388607KB
stdin
Standard input is empty
stdout
Standard output is empty