#include<cstdio>
#include<iostream>
#include<cstring>
const int maxn = 40;
int u[maxn],v[maxn],next[maxn],first[maxn];
int n,m;
void read_graph()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
first[i]=-1;
for(int e=0;e<m;e++)
{
scanf("%d%d",&u[e],&v[e]);
next[e]=first[u[e]];
first[u[e]]=e;
}
}
int main()
{
read_graph();
for(int i=1;i<=n;i++)
{
printf("Start from %d:\n",i);
for(int id=first[i];id!=-1;id=next[id])
{
printf("Edge:%d st->:%d et->:%d\n",id,u[id],v[id]);
}
printf("\n");
}
return 0;
}
#include<cstring>
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 100;
int n;
struct edge{
int u,v,w,next;
};
edge E[maxn];//determined by the scale of edge
int LE[maxn];//determined by the scale of point
void init(){
for(int i=0;i<maxn;i++)
LE[i]=-1;
}
void read_graph(){
int u,v,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d%d",&u,&v);
E[i].v=v;
E[i].next=LE[u];
LE[u]=i;
}
}
void print(){
for(int i=1;i<=n;i++){
printf("start from %d:\n",i);
for(int id=LE[i];id!=-1;id=E[id].next){
printf("Edge %d: st:%d et:%d\n",id,i,E[id].v);
}
printf("\n");
}
}
int main(){
init();
read_graph();
print();
return 0;
}