【图论基础】 图的表示
邻接矩阵
#define DATASIZE 1e3
int map[DATASIZE][DATASIZE];
memset(map,0,sizeof(map));
for(int i=0;i<m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
map[u][v] = 1;
map[v][u] = 1;
}
for(int i=0;i<n;i++)
{
if(map[u][i])
{
int v = i;
}
}
邻接表
#define DATASIZE 1e3
struct edge
{
int v,w;
edge(){}
edge(int _v,int _w):v(_v),w(_w){}
};
std::vector<edge> G[DATASIZE];
for(int i=0;i<n;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
G[u].emplace_back(v,w);
G[v].emplace_back(u,w);
}
for(size_t i=0;i<G[u].size();i++)
{
edge e = G[u][i];
}
链式前向星
#define DATASIZE 1e3
struct edge
{
int to;
int next;
int cost;
}e[DATASIZE];
int head[DATASIZE];
memset(head,-1,sizeof(head));
inline void add(int u,int v,int w)
{
e[id].to = v;
e[id].next = head[u];
e[id].cost = w;
head[u] = id++;
}
for(int i=0;i<m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
for(int i=head[u];~i;i=e[i].next)
{
int v = e[i].to;
}