//8647 实现图的存储结构
#include <iostream>
#include <stack>
#include <algorithm>
#include <string.h>//记得加.h
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a[n+1][n+1];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
a[i][j]=0;
}
while(m--)
{
int i,j;
cin>>i>>j;
a[i][j]=1;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
//8648 图的深度遍历
#include <iostream>
#include <stack>
#include <algorithm>
#include <string.h>//记得加.h
#include <cstdio>
#include <cstdlib>
using namespace std;
struct element
{
char name[5];
};//记得要加分号
void dfs(int x,int v[],element a[],stack<int> e[])
{
if(v[x]==1)
return;
cout<<a[x].name<<" ";
v[x]=1;
int length=e[x].size();
for(int i=0;i<length;i++)
{
int t=e[x].top();
e[x].pop();
if(v[t]==0)
dfs(t,v,a,e);
}
}
int main()
{
int n,m;
int type;cin>>type;
cin>>n>>m;
int v[n+1];
v[n+1]={0};//这里要分开写
stack<int>e[n+1];
element a[n+1];
for(int i=1;i<=n;i++)
cin>>a[i].name;
char x[5],y[5];
int w;
for(int i=1;i<=m;i++)
{
if(type==1||type==3)
cin>>x>>y>>w;
else
cin>>x>>y;
int p=-1,q=-1;
for(int j=1;j<=n;j++)//初始值必须从1开始,因为前面输入的时候是从1开始
{
if(strcmp(a[j].name,x)==0)
p=j;
else if(strcmp(a[j].name,y)==0)
q=j;
if(q!=-1&&p!=-1)
break;
}
if(type==0||type==1)
e[p].push(q);
else
{
e[p].push(q);
e[q].push(p);
}
}
for(int i=1;i<=n;i++)
dfs(i,v,a,e);
return 0;
}
//8649 图的广度遍历
#include <iostream>
#include <stack>
#include <queue>
#include <algorithm>
#include <string.h>//记得加.h
#include <cstdio>
#include <cstdlib>
using namespace std;
struct element
{
char name[5];
};
void bfs(int x,int v[],element a[],stack<int> e[])
{
if(v[x]==1)
return;
queue<int>q;
v[x]=1;
q.push(x);
while(!q.empty())
{
int t=q.front();
cout<<a[t].name<<" ";
q.pop();
int length=e[t].size();
for(int i=0;i<length;i++)
{
int y=e[t].top();
e[t].pop();
if(v[y]==0)
{
v[y]=1;
q.push(y);
}
}
}
}
int main()
{
int n,m;
int type;cin>>type;
cin>>n>>m;
int v[n+1];
v[n+1]={0};//这里要分开写
stack<int>e[n+1];
element a[n+1];
for(int i=1;i<=n;i++)
cin>>a[i].name;
char x[5],y[5];
int w;
for(int i=1;i<=m;i++)
{
if(type==1||type==3)
cin>>x>>y>>w;
else
cin>>x>>y;
int p=-1,q=-1;
for(int j=1;j<=n;j++)//初始值必须从1开始,因为前面输入的时候是从1开始
{
if(strcmp(a[j].name,x)==0)
p=j;
else if(strcmp(a[j].name,y)==0)
q=j;
if(q!=-1&&p!=-1)
break;
}
if(type==0||type==1)
e[p].push(q);
else
{
e[p].push(q);
e[q].push(p);
}
}
for(int i=1;i<=n;i++)
bfs(i,v,a,e);
return 0;
}