为什么此代码(反向DFS)只有10分?求助
查看原帖
为什么此代码(反向DFS)只有10分?求助
1077514
luoguzsj楼主2024/7/4 10:18
#include<bits/stdc++.h>
using namespace std;
vector<int>g[100005];
bool flag[100005]; 
int ans[100005],j,cnt;
void dfs(int x){
	ans[x]=max(ans[x],j);
	cnt++;//个数 
	for(int i=0;i<g[x].size();++i){
		int a=g[x][i];
		if(ans[a])continue;
		dfs(a);
	}
}
int main(){
    int n,m;
    cin>>n>>m;
    //反向建图 
    for(int i=1,u,v;i<=m;++i){
        cin>>u>>v;
        g[v].push_back(u);
    }
    //j为最大值 
    j=n;
    while(cnt<n){
    	dfs(j);
    	j--;
	}
	//输出 
    for(int i=1;i<=n;++i){
    	cout<<ans[i]<<' ';
	}
    return 0;
# }
2024/7/4 10:18
加载中...