Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int main(){
- int n,m,a,b;
- cin>>n>>m>>a>>b;
- a--;
- b--;
- vector<vector<int> > gr(n);
- int x,y;
- for(int i = 0; i<m; i++){
- cin>>x>>y;
- x--;
- y--;
- gr[x].push_back(y);
- gr[y].push_back(x);
- }
- vector<int> level(n, 0);
- vector<bool> visited(n, false);
- vector<long long> count_(n, 0);
- vector<int> q;
- q.push_back(a);
- visited[a] = true;
- count_[a] = 1;
- int j = 1;
- while(! q.empty()){
- vector<int> next;
- for(int o = 0; o<q.size();o++){
- int node = q[o];
- int child;
- for(int i = 0; i<gr[node].size(); i++){
- child = gr[node][i];
- if( visited[child] == false){
- level[child] = j;
- count_[child] = count_[node];
- next.push_back(child);
- visited[child] = true;
- }
- else if(level[child] == j){
- count_[child] += count_[node];
- }
- }
- }
- q = next;
- j++;
- }
- cout<<count_[b]%(1000000007);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement