Cod sursa(job #3366614)
| Utilizator | Data | 2 octombrie 2026 19:12:16 | |
|---|---|---|---|
| Problema | Dusman | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.87 kb |
///sursa provizorie
#include <fstream>
using namespace std;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
int n,ciclu,k,m,a,b,gasit=0;
int dusmani[1010][4];
int v[1001],f[1001];
int verif(int pas){
if(pas>1){
for(int i=1;i<=3;i++){
if(v[pas-1]==dusmani[v[pas]][i] ){
return 0;
}
}
return 1;
}else{
return 1;
}
}
void backtrack(int pas){
if(pas==n+1){
ciclu++;
if(ciclu==k){
for(int i=1;i<=n;i++){
fout<<v[i]<<" ";
}
gasit=1;
}
}else{
if(gasit==0){
for(int i=1;i<=n;i++){
if(f[i]==0){
v[pas]=i;
f[i]=1;
if(verif(pas)==1){
backtrack(pas+1);
}
f[i]=0;
}
}
}
}
}
int main()
{
fin>>n>>k>>m;
for(int i=1;i<=m;i++){
fin>>a>>b;
if(dusmani[a][1]==0){
dusmani[a][1]=b;
}else{
if(dusmani[a][1]!=0 && dusmani[a][2]==0){
dusmani[a][2]=b;
}else{
if(dusmani[a][2]!=0 && dusmani[a][3]==0){
dusmani[a][3]=b;
}
}
}
if(dusmani[b][1]==0){
dusmani[b][1]=a;
}else{
if(dusmani[b][1]!=0 && dusmani[b][2]==0){
dusmani[b][2]=a;
}else{
if(dusmani[b][2]!=0 && dusmani[b][3]==0){
dusmani[b][3]=a;
}
}
}
}
backtrack(1);
return 0;
}
