警示后人(如果20-30pts)
查看原帖
警示后人(如果20-30pts)
47911
xiaozhangma楼主2022/10/15 11:25

若can[i]表示i号节点能到达终点,那么剔除满足不条件一的点时,一定不能这么写:

for(int i=1;i<=n;i++){
	if(can[i]){
		for(int j=0;j<e[i].size();j++){
			if(!can[e[i][j]]){can[i];break;}//如果当前点出边所指向的点,不与终点联通,则该点不可取 
		}
	}
} 

而是新建一个inroad数组,表示当前节点能存在于路径中:

for(int i=1;i<=n;i++){
	if(can[i]){
		bool flg = 1;
		for(int j=0;j<e[i].size();j++){
			if(!can[e[i][j]]){flg=0;break;}
		}
		if(flg)inroad[i] = 1;
	}
} 
2022/10/15 11:25
加载中...