Advertisement
Guest User

Untitled

a guest
Aug 28th, 2015
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main(){
  8.     int n,m,a,b;
  9.  
  10.     cin>>n>>m>>a>>b;
  11.     a--;
  12.     b--;
  13.     vector<vector<int> > gr(n);
  14.     int x,y;
  15.     for(int i = 0; i<m; i++){
  16.         cin>>x>>y;
  17.         x--;
  18.         y--;
  19.         gr[x].push_back(y);
  20.         gr[y].push_back(x);
  21.     }
  22.  
  23.     vector<int> level(n, 0);
  24.  
  25.     vector<bool> visited(n, false);
  26.  
  27.     vector<long long> count_(n, 0);
  28.  
  29.     vector<int> q;
  30.  
  31.     q.push_back(a);
  32.  
  33.     visited[a] = true;
  34.     count_[a] = 1;
  35.     int j = 1;
  36.  
  37.     while(! q.empty()){
  38.         vector<int> next;
  39.         for(int o = 0; o<q.size();o++){
  40.             int node = q[o];
  41.             int child;
  42.             for(int i = 0; i<gr[node].size(); i++){
  43.                 child = gr[node][i];
  44.                 if( visited[child] == false){
  45.                     level[child] = j;
  46.                     count_[child] = count_[node];
  47.                     next.push_back(child);
  48.                     visited[child] = true;
  49.                 }
  50.                 else if(level[child] == j){
  51.                     count_[child] += count_[node];
  52.                 }
  53.  
  54.             }
  55.         }
  56.         q = next;
  57.         j++;
  58.     }
  59.     cout<<count_[b]%(1000000007);
  60.  
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement