[cpp]
#include <stdio.h>
#include <cstring>
#define maxn 1000
struct edge
{
int from,to,next,val;
} e[maxn];
int first[maxn];
int main()
{
int n;
while(scanf("%d",&n)==1)
{
memset(first,-1,sizeof(first));
for(int i=0; i<n; i++)
{
scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].val);
e[i].next=first[e[i].from];
first[e[i].from]=i;
}
for(int i=1; i<10; i++)
{
printf("以%d為起點的邊是:\n",i);
for(int u=first[i];u!=-1;u=e[u].next)
printf("%d %d %d\n",e[u].from,e[u].to,e[u].val);
}
}
return 0;
}
一下為轉載、、
#include<iostream>
#define Maxn 200
using namespace std;
struct edge{int from,to,weight,next;}e[Maxn];//存儲邊信息的結構體
#include <stdio.h>
#include <cstring>
#define maxn 1000
struct edge
{
int from,to,next,val;
} e[maxn];
int first[maxn];
int main()
{
int n;
while(scanf("%d",&n)==1)
{
memset(first,-1,sizeof(first));
for(int i=0; i<n; i++)
{
scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].val);
e[i].next=first[e[i].from];
first[e[i].from]=i;
}
for(int i=1; i<10; i++)
{
printf("以%d為起點的邊是:\n",i);
for(int u=first[i];u!=-1;u=e[u].next)
printf("%d %d %d\n",e[u].from,e[u].to,e[u].val);
}
}
return 0;
}
一下為轉載、、
#include<iostream>
#define Maxn 200
using namespace std;
struct edge{int from,to,weight,next;}e[Maxn];//存儲邊信息的結構體
int first[Maxn];//起點為下標存儲(e中邊的位置)
int main()
{
int edges;//邊數
memset(first,-1,sizeof(first));
//因為剛開始first不指向任何一條邊的下標,所以first都為-1
cin>>edges;//邊數
for(int i=0;i<edges;i++)
{
cin>>e[i].from>>e[i].to>>e[i].weight;//起點 終點 權重
e[i].next=first[e[i].from];first[e[i].from]=i;//不容易理解的地方
/*
利用first數組存儲的是最新的(以數組下標為起點的)邊的下標
並且該條邊的next指向的是同樣以數組下標為起點的下一條邊的下標
直到下一條邊的next=-1(即將所有以數組下標為起點的邊都遍歷了一遍)
*/
}
for(int u=1;u<10;u++)//輸出圖
{
cout<<"以"<<u<<"為起點的所有邊的信息:"<<endl;
for(int v=first[u];v!=-1;v=e[v].next)//遍歷以u為起點的所有邊的信息
cout<<e[v].from<<" "<<e[v].to<<" "<<e[v].weight<<endl;
}
return 0;
}
/*
5
3 4 6
3 7 8
1 3 6
2 4 7
3 5 1
*/</span>
int first[Maxn];//起點為下標存儲(e中邊的位置)
int main()
{
int edges;//邊數
memset(first,-1,sizeof(first));
//因為剛開始first不指向任何一條邊的下標,所以first都為-1
cin>>edges;//邊數
for(int i=0;i<edges;i++)
{
cin>>e[i].from>>e[i].to>>e[i].weight;//起點 終點 權重
e[i].next=first[e[i].from];first[e[i].from]=i;//不容易理解的地方
/*
利用first數組存儲的是最新的(以數組下標為起點的)邊的下標
並且該條邊的next指向的是同樣以數組下標為起點的下一條邊的下標
直到下一條邊的next=-1(即將所有以數組下標為起點的邊都遍歷了一遍)
*/
}
for(int u=1;u<10;u++)//輸出圖
{
cout<<"以"<<u<<"為起點的所有邊的信息:"<<endl;
for(int v=first[u];v!=-1;v=e[v].next)//遍歷以u為起點的所有邊的信息
cout<<e[v].from<<" "<<e[v].to<<" "<<e[v].weight<<endl;
}
return 0;
}
/*
5
3 4 6
3 7 8
1 3 6
2 4 7
3 5 1
*/</span>
作者:ehi11