不开O2AC 开O2RE3个点求解
查看原帖
不开O2AC 开O2RE3个点求解
826012
ZhuHua14楼主2023/11/21 17:26

如题,RE#2,#9,#10

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e4 + 5;

vector<int> edge[MAXN];
int n,m,k,cows[100],canto[MAXN];
bool isread[MAXN];
void dfs(int k){
//    cout << k << ":\n" <<isread[k];
    isread[k] = 1;
    canto[k]++;
//    cout << canto[k] << '\n';
    for(int i = 0; i < edge[k].size(); i++){
        if(isread[edge[k][i]] == 0){
            dfs(edge[k][i]);
        }
    }
}

int main(){
    cin >> k >> n >> m;
    for(int i = 1; i <= k; i++){
        cin >> cows[i];
//        cout << ' ' << cows[i];
    }
    int nowf,nowt;
//   cout << '\n';
    for(int i = 1; i <= m; i++){
        cin >> nowf >> nowt;
        edge[nowf].push_back(nowt);
//       cout << edge[nowf][edge[nowf].size() - 1] << "\n";
    }
    for(int i = 1; i <= k; i++){
        memset(isread,0,sizeof(isread));
        dfs(cows[i]);
    }
    int ans = 0;
    for(int i = 1; i <= n; i++){
        //cout << canto[i] << ' ';
        if(canto[i] == k){
            ans++;
        }
    }
    cout << ans;
    return 0;
}
2023/11/21 17:26
加载中...