电脑没有声音win10
时间: 2023-09-27 12:11:27 浏览: 40
建立邻接矩阵:
```c
#define MAXV 100 // 最大顶点数
#define INF 0x3f3f3f3f // 表示无穷大
int AdjMatrix[MAXV][MAXV]; // 邻接矩阵
int n; // 顶点数
void init() {
memset(AdjMatrix, INF, sizeof(AdjMatrix)); // 初始化为无穷大
}
void addEdge(int u, int v, int w) {
AdjMatrix[u][v] = w; // u到v的边权为w
// 若是无向图,还需加上下面一句
// AdjMatrix[v][u] = w; // v到u的边权也为w
}
```
深度优先遍历:
```c
bool visited[MAXV]; // 记录每个节点是否被访问过
void dfs(int u) {
visited[u] = true;
// 处理节点u
for (int v = 0; v < n; v++) {
if (AdjMatrix[u][v] != INF && !visited[v]) {
dfs(v);
}
}
}
```
广度优先遍历:
```c
bool visited[MAXV];
void bfs(int s) {
queue<int> q;
visited[s] = true;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
// 处理节点u
for (int v = 0; v < n; v++) {
if (AdjMatrix[u][v] != INF && !visited[v]) {
visited[v] = true;
q.push(v);
}
}
}
}
```
从一个顶点到其余顶点的最短路径:
```c
int dist[MAXV]; // 存储源点到各个顶点的最短距离
void dijkstra(int s) {
memset(dist, INF, sizeof(dist)); // 初始化为无穷大
dist[s] = 0;
bool vis[MAXV] = {false};
for (int i = 0; i < n; i++) {
int u = -1, minn = INF;
for (int j = 0; j < n; j++) {
if (!vis[j] && dist[j] < minn) {
u = j;
minn = dist[j];
}
}
if (u == -1) return; // 找不到最小距离的点,退出循环
vis[u] = true;
for (int v = 0; v < n; v++) {
if (!vis[v] && AdjMatrix[u][v] != INF && dist[u] + AdjMatrix[u][v] < dist[v]) {
dist[v] = dist[u] + AdjMatrix[u][v];
}
}
}
}
```