码迷,mamicode.com
首页 > 其他好文 > 详细

链式前向星(邻接表)

时间:2019-02-14 20:44:58      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:etc   eof   style   pre   pac   name   color   oid   iostream   

#include<vector>
#include<cstdio>
#include<cstdlib>
#include<iostream>
#define FORa(i,s,e) for(int i=s;i<=e;i++)
#define FORs(i,s,e) for(int i=s;i>=e;i--)
#define File(name) freopen(name".in","r",stdin),freopen(name".out","w",stdout);


using namespace std;

static char buf[100000],*pa=buf,*pb=buf;
#define gc getchar() //pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,stdin),pa==pb)?EOF:*pa++
inline int read();



const int N=100,M=200;
struct Edge{
    int to,dis,next;
}*v_edge;
int n,m,num_edge,head[N];
void Add_edge(int from,int to,int dis)
{
    v_edge[++num_edge]=((Edge){to,dis,head[from]});
    head[from]=num_edge;
}
int main()
{
    int from,to,dis;
    
    n=read(),m=read();
    v_edge=new Edge[2*m];
    FORa(i,1,m)
        from=read(),to=read(),dis=read(),Add_edge(from,to,dis),Add_edge(to,from,dis);    
    FORa(i,1,n)
    {
        int p=head[i];
        while(p)
        {
            cout<<v_edge[p].to<<" ";
            p=v_edge[p].next;
        }
        cout<<endl;
     } 
    return 0;
}

inline int read()
{
    register int x(0);register int f(1);register char c(gc);
    while(c<0||c>9) f=c==-?-1:1,c=gc;
    while(c>=0&&c<=9) x=(x<<1)+(x<<3)+(c^48),c=gc;
    return x*f;
}
/*4 3
1 2 1
2 3 1
3 4 1
*/

 

链式前向星(邻接表)

标签:etc   eof   style   pre   pac   name   color   oid   iostream   

原文地址:https://www.cnblogs.com/SeanOcean/p/10376515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!