摘要:
int g[N][N]; // 存储每条边int dist[N]; // 存储1号点到每个点的最短距离bool st[N]; // 存储每个点的最短路是否已经确定 // 求1号点到n号点的最短路,如果不存在则返回-1int dijkstra(){ memset(dist, 0x3f, sizeof 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(27)
评论(0)
推荐(0)
摘要:
bool topsort(){ int hh = 0, tt = -1; // d[i] 存储点i的入度 for (int i = 1; i <= n; i ++ ) if (!d[i]) q[ ++ tt] = i; while (hh <= tt) { int t = q[hh ++ ]; fo 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(49)
评论(0)
推荐(0)
摘要:
queue<int> q;st[1] = true; // 表示1号点已经被遍历过q.push(1); while (q.size()){ int t = q.front(); q.pop(); for (int i = h[t]; i != -1; i = ne[i]) { int j = e[i 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(25)
评论(0)
推荐(0)
摘要:
int dfs(int u){ st[u] = true; // st[u] 表示点u已经被遍历过 for (int i = h[u]; i != -1; i = ne[i]) { int j = e[i]; if (!st[j]) dfs(j); }} 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(29)
评论(0)
推荐(0)
摘要:
int n; // n表示点数int g[N][N]; // 邻接矩阵,存储所有边int dist[N]; // 存储其他点到当前最小生成树的距离bool st[N]; // 存储每个点是否已经在生成树中 // 如果图不连通,则返回INF(值是0x3f3f3f3f), 否则返回最小生成树的树边权重之 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(32)
评论(0)
推荐(0)
摘要:
int n, m; // n是点数,m是边数int p[N]; // 并查集的父节点数组 struct Edge // 存储边{ int a, b, w; bool operator< (const Edge &W)const { return w < W.w; }}edges[M]; int fi 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(31)
评论(0)
推荐(0)
摘要:
初始化: for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= n; j ++ ) if (i == j) d[i][j] = 0; else d[i][j] = INF; // 算法结束后,d[a][b]表示a到b的最短距离void floyd() 阅读全文
posted @ 2022-12-04 20:58
山海自有归期
阅读(18)
评论(0)
推荐(0)
摘要:
// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点int h[N], e[N], ne[N], idx; // 添加一条边a->bvoid add(int a, int b){ e[idx] = b, ne[idx] = h[a], h[a] = idx ++ 阅读全文
posted @ 2022-12-04 20:57
山海自有归期
阅读(46)
评论(0)
推荐(0)

浙公网安备 33010602011771号