E tle 6个点求助
  • 板块学术版
  • 楼主Gilbert1206
  • 当前回复7
  • 已保存回复7
  • 发布时间2025/8/2 21:43
  • 上次更新2025/8/3 13:17:08
查看原帖
E tle 6个点求助
1274525
Gilbert1206楼主2025/8/2 21:43
#include<bits/stdc++.h>
using namespace std;
//#define int long long
int n,m,s,tu,kk;
vector<int>a[2000];
int vis[2000]; 
stack<int>vise;
int  dfs(int x){
//	cout<<"--"<<x;
	if(x==tu&&kk==0){
	//	cout<<114514;
		int k[60000],t=0;
		while(vise.size()!=0){
			k[t]=vise.top();
			t++;
			vise.pop();
		}
		for(int i=t-1;i>=0;i--){
			cout<<k[i]<<" ";
		}
		cout<<endl;
		kk=1;
		return 0;
	}
	if(kk==1){
//		cout<<1; 
		return 0;
	}
	int p[60000];
//	cout<<x<<"--";
	for(int i=0;i<a[x].size();i++){
//		cout<<a[x][i]<<"-";
		p[i]=a[x][i];
	}

//	cout<<endl;
	int t=a[x].size();
	if(t==0){
		return 0;
	}
	sort(p,p+t);
	for(int i=0;i<t;i++){
		
		if(vis[p[i]]==0){
			vis[p[i]]=1;
			vise.push(p[i]);
			dfs(p[i]);
			if(kk==1){
				return 0;
			}
			vise.pop();
			vis[p[i]]=0;
		}
	//	cout<<p[i]<<" ";
	}
	
	return 0;
}
signed main(){
	ios::sync_with_stdio (0);
	cin.tie (0);
	cout.tie (0); 
	int t;
	cin>>t;
	while(t--){
		cin>>n>>m>>s>>tu;
		kk=0;
		while(vise.size()!=0){
			vise.pop();
		}
		for(int i=1;i<=n;i++){
			vis[i]=0;
			while(a[i].size()!=0){
				a[i].pop_back();
			}
		}
		for(int i=0;i<m;i++){
			int x,y;
			cin>>x>>y;
			a[x].push_back(y);
			a[y].push_back(x);
		}
		vis[s]=1;
		vise.push(s);
		dfs(s); 
	}
	return 0;
} 
2025/8/2 21:43
加载中...