TLE
查看原帖
TLE
633466
LiaoYF1楼主2022/12/13 09:09
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n,k,vis[25],ans[25],x;
vector<int> a[25];
void dfs(int now,int u){
    ans[now]=u;
    if(u==k){
        x++;
        for(int i=1;i<=now;i++){
            cout<<ans[i]<<" ";
        }
        cout<<"\n";
        ans[now]=0;
        return;
    }
    for(int i=0;i<a[u].size();i++){
        if(!vis[a[u][i]]){
            vis[a[u][i]]=1;
            dfs(now+1,a[u][i]);
            vis[a[u][i]]=0;
        }
    }
    ans[now]=0;
}
int main(){
    int t=0;
    while(cin>>k){
        t++;
        x=0;
        for(int i=1;i<=20;i++){
            a[i].clear();
        }
        int u,v;
        while(1){
            cin>>u>>v;
            if(u==0&&v==0)break;
            a[u].push_back(v);
            a[v].push_back(u);
            n=max(max(u,v),n);
        }
        for(int i=1;i<=n;i++){
            sort(a[i].begin(),a[i].end());
        }
        printf("CASE %d:\n",t);
        vis[1]=1;
        dfs(1,1);
        printf("There are %d routes from the firestation to streetcorner %d.\n",x,k);
    }
    return 0;
}

vector存图,DFS

2022/12/13 09:09
加载中...