2015年9月15日 星期二

[HOJ]343 老鼠愛大米

#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);
}

沒有留言:

張貼留言