#include<cstdio>
#include<vector>
#define MAX 100005
using namespace std;
vector<int> v[MAX];
int num[MAX],n,m,k,fr,to,sum;
bool vis[MAX];
void dfs(int t){
vis[t]=1;
sum+=num[t];
for(int i=0;i<v[t].size();i++){
if(!vis[v[t][i]])dfs(v[t][i]);
}
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<m;i++){
scanf("%d%d",&fr,&to);
v[to].push_back(fr);
}
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
dfs(k);
printf("%d\n",sum);
}
沒有留言:
張貼留言