http://ybt.ssoier.cn:8088/problem_show.php?pid=1341
/* 从i出发遍历所有节点
return 倒序的遍历的路径
*/
int dfs(int i)
{
if(check(i) == true)
{
return i;
}
/* 尝试从i出发能到哪些点 */
UP(j, 1, n)
{
if(e[i][j] == 1 && i!=j)
{
e[i][j] = INF; // 避免走回路
e[j][i] = INF;
return dfs(j) * 10 + i;
e[i][j] = 1;
e[j][i] = 1;
}
}
}
#include<bits/stdc++.h>
#define LEN 0x7f
#define INF 0x7fffffff
#define UP(i,x,y) for(int i=x; i<=y; i++)
using namespace std;
int n, e[LEN][LEN];
void dfs(int i, string pathStr)
{
UP(j, 1, n)
{
if(e[i][j] != 0)
{
dfs(j, pathStr+=j);
}
}
}
int main()
{
memset(e, 0x7f, sizeof(e)); // 全部初始化成一个很接近0x7fffffff的数
int n, m;
int x, y;
cin>>n>>m;
UP(i, 1, m)
{
cin>>x>>y;
e[x][y] = 1;
e[y][x] = 1;
}
UP(i, 1, m)
{
UP(j, 1, m)
{
cout<<e[i][j]<<" ";
}
cout<<endl;
}
return 0;
}