題目
暴力法
#include<bits/stdc++.h>
using namespace std;
const int inf= 0x3f3f3f3f;
typedef long long ll;
ll n,m,k,s;
const ll mod = 1000000007;
vector<ll>g[1005];
ll bfs()
{
ll path = 0;
ll cn = 0;
set<ll>s1;
set<ll>s2;
s1.insert(s);
while(1)
{
set<ll>::iterator it = s1.begin();
path++;
if(path==k+1) break;
s2.clear();
while(it!=s1.end())
{
ll u = *it;
ll len = g[u].size();
for(int i=0;i<len;i++)
{
s2.insert(g[u][i]);
if(path==k) cn = (cn+1)%mod;
}
it++;
}
s1 = s2;
}
return cn;
}
int main()
{
cin>>n>>m>>k>>s;
for(int i=1;i<=m;i++)
{
ll u,v;cin>>u>>v;
g[u].push_back(v);
}
cout<<bfs()<<endl;
}