#25214: 用DFS被TLE 求救


chuan53 (eggMan)

學校 : 臺北市私立薇閣高級中學
編號 : 90787
來源 : [140.112.24.187]
最後登入時間 :
2023-10-31 17:19:37
b298. 老闆阿我要退貨 -- 103學年度板橋高中校內資訊學科能力競賽(一) | From: [111.235.252.27] | 發表日期 : 2021-04-30 13:11

#include<iostream>

#include <set> 

using namespace std;

 

bool pass;

int s[100001][2]={0};

int n,m,l,q;

int temp;

set<int> prob;

 

int dfs(int x){

if(prob.count(x)){

pass=false;

return 0;

}

for(int i=0; i<m; i++){

if(s[i][1]==x){

dfs(s[i][0]);

}

}

}

int main(){

cin.tie(0);

ios_base::sync_with_stdio(false);

cin>>n>>m>>l>>q;

for(int i=0; i<m; i++){

cin>>s[i][0]>>s[i][1];

}

 

for(int i=0; i<l; i++){

cin>>temp;

prob.insert(temp);

}

for(int i=0; i<q; i++){

pass=true;

int temp;

cin>>temp;

dfs(temp);

if(pass){

cout<<"YA~~\n";

}else{

cout<<"TUIHUOOOOOO\n";

}

}

}

 
#28941: Re:用DFS被TLE 求救


chuan53 (eggMan)

學校 : 臺北市私立薇閣高級中學
編號 : 90787
來源 : [140.112.24.187]
最後登入時間 :
2023-10-31 17:19:37
b298. 老闆阿我要退貨 -- 103學年度板橋高中校內資訊學科能力競賽(一) | From: [61.216.154.148] | 發表日期 : 2022-01-14 10:52

你在幹嘛,你好爛喔

明明就可以輕鬆AC,為什麼要用<set>

單純DFS就可以了,到底...

vector<int> adj[maxn];
bool pass[maxn]{0};
void dfs(int u){
    if(pass[u]) return;
    pass[u] = 1;
    for(auto v:adj[u]){
        // cout << v <<"\n";
        dfs(v);
    }
}
 
ZeroJudge Forum