08-图9 关键活动

本文介绍了一个使用C语言实现的关键路径算法程序,该程序通过输入节点数、边数及各边的权重来构建一个有向图,并计算出从起始节点到终点节点的最早开始时间和最晚结束时间,进而找出关键路径。
#include <stdio.h>

#define MAXINT 0x7fffffff
#define Max 101

int Graph[Max][Max], Indegree[Max], Outdegree[Max], Earliest[Max], Latest[Max];

int max(int a, int b)
{
	if (a > b)
		return a;
	else
		return b;	
}

int min(int a, int b)
{
	if (a < b)
		return a;
	else
		return b;
}

int Earliest_Time(int N);
void Latest_Time(int N, int res);

int main(int argc, char const *argv[])
{
	// freopen("test.txt", "r", stdin);
	int N, M;
	scanf("%d %d", &N, &M);
	for (int i = 1; i <= N; i++){
		for (int j = 0; j <= N; j++){
			Graph[i][j] = -1;
		}
		Indegree[i] = 0;
		Outdegree[i] = 0;
		Earliest[i] = 0;
		Latest[i] = MAXINT;
	}
	int s, e, c;
	for (int i = 0; i < M; i++){
		scanf("%d %d %d", &s, &e, &c);
		Graph[s][e] = c;
		Outdegree[s]++;
		Indegree[e]++;
	}
	int res = Earliest_Time(N);
	Latest_Time(N, res);
	if (res == -1)
		printf("0");
	else{
		printf("%d\n", res);
		for (int i = 1; i <= N; i++){
			if (Earliest[i] != Latest[i])
				continue;
			for (int j = N; j >= 1; j--){
				if (Graph[i][j] >= 0 && Earliest[j] == Latest[j] && (Latest[j] - Earliest[i] == Graph[i][j]))
					printf("%d->%d\n", i, j);
			}
		}
	}
	return 0;
}

int Earliest_Time(int N)
{
	int queue[N+1], front = 0, rear = 0;
	for (int i = 1; i <= N; i++){
		if (Indegree[i] == 0){
			queue[rear++] = i;
			Indegree[i]--;
		}
	}
	int cnt = 0, v;
	while (rear - front){
		v = queue[front++];
		cnt++;
		for (int i = 1; i <= N; i++){
			if (Graph[v][i] >= 0){
				Indegree[i]--;
				Earliest[i] = max(Earliest[i], Earliest[v] + Graph[v][i]);
			}
			if (Indegree[i] == 0){
				queue[rear++] = i;
				Indegree[i]--;
			}
		}
	}
	int res = 0;
	if (cnt != N)
		return -1;
	else {
		for (int i = 1; i <= N; i++){
			if (Outdegree[i] == 0)
				res = max(res, Earliest[i]);
		}
		return res;
	}
}

void Latest_Time(int N, int res)
{
	int queue[N+1], front = 0, rear = 0;
	for (int i = 1; i <= N; i++){
		if (Outdegree[i] == 0){
			queue[rear++] = i;
			Latest[i] = res;
			// Outdegree[i]--;
		}
	}
	int v;
	while (rear - front){
		v = queue[front++];
		for (int i = N; i >= 1; i--){
			if (Graph[i][v] >= 0){
				Outdegree[i]--;
				Latest[i] = min(Latest[i], Latest[v] - Graph[i][v]);
				if (Outdegree[i] == 0)
					queue[rear++] = i;
			}
		}
	}
}

你现在是一名资深的蓝牙工程师,讲解下面的log: 行 142194: 08-19 17:31:01.715 1002 4590 5586 V BluetoothAdapterService: energyInfoCallback() status = 0 txTime = 10023 rxTime = 3663 idleTime = 26433 energyUsed = 1703980 ctrlState = 0x00420001 traffic = [] 行 156298: 08-19 17:32:13.519 1002 4590 5586 V BluetoothAdapterService: energyInfoCallback() status = 0 txTime = 10840 rxTime = 4581 idleTime = 32599 energyUsed = 2000516 ctrlState = 0x00420001 traffic = [] 行 165391: 08-19 17:32:38.370 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: A2dp device: XX:XX:XX:XX:2D:7D 行 165407: 08-19 17:32:38.370 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: CallAudio device: XX:XX:XX:XX:2D:7D 行 165421: 08-19 17:32:38.372 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: LeAudio devices: Lead[null] - member_1[null] 行 168804: 08-19 17:32:39.509 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: A2dp device: XX:XX:XX:XX:2D:7D 行 168813: 08-19 17:32:39.511 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: CallAudio device: XX:XX:XX:XX:2D:7D 行 168817: 08-19 17:32:39.513 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: LeAudio devices: Lead[null] - member_1[null] 行 174707: 08-19 17:32:48.459 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: A2dp device: XX:XX:XX:XX:2D:7D 行 174720: 08-19 17:32:48.459 1002 4590 4610 I BluetoothAdapterService: getActiveDevices: CallAudio device: XX:XX:XX:XX:2D:7D 行 174725: 08-19 17:32:48.460 1002 4590 4610 I BluetoothAdapterService: getActiveDevices: LeAudio devices: Lead[null] - member_1[null] 行 178505: 08-19 17:32:53.959 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: A2dp device: XX:XX:XX:XX:2D:7D 行 178539: 08-19 17:32:53.961 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: CallAudio device: XX:XX:XX:XX:2D:7D 行 178543: 08-19 17:32:53.961 1002 4590 5725 I BluetoothAdapterService: getActiveDevices: LeAudio devices: Lead[null] - member_1[null] 行 188331: 08-19 17:33:00.191 1002 4590 6220 I BluetoothAdapterService: getActiveDevices: A2dp device: XX:XX:XX:XX:2D:7D 行 188341: 08-19 17:33:00.191 1002 4590 6220 I BluetoothAdapterService: getActiveDevices: CallAudio device: XX:XX:XX:XX:2D:7D 行 188345: 08-19 17:33:00.191 1002 4590 6220 I BluetoothAdapterService: getActiveDevices: LeAudio devices: Lead[null] - member_1[null] 行 218292: 08-19 17:33:12.424 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:F0:16, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb] 行 218312: 08-19 17:33:12.429 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:69:8F, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[00000000-0000-0000-0099-aabbccddeeff, 00000000-deca-fade-deca-deafdecacaff, 0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb, 00001844-0000-1000-8000-00805f9b34fb, 00001846-0000-1000-8000-00805f9b34fb, 0000184e-0000-1000-8000-00805f9b34fb, 0000184f-0000-1000-8000-00805f9b34fb, 0000ff01-0000-1000-8000-00805f9b34ff] 行 218316: 08-19 17:33:12.430 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:FD:37, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[00001101-0000-1000-8000-00805f9b34fb, 0000110a-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001124-0000-1000-8000-00805f9b34fb, cc353442-be58-4ea2-876e-11d8d6976366] 行 218319: 08-19 17:33:12.430 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:09:91, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb] 行 218321: 08-19 17:33:12.431 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:F8:8C, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[00001101-0000-1000-8000-00805f9b34fb, 0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb] 行 218324: 08-19 17:33:12.432 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:2D:7D, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[00001101-0000-1000-8000-00805f9b34fb, 0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb, 74ec2172-0bad-4d01-8f77-997b2be0722a, fe010000-1234-5678-abcd-00805f9b34fb] 行 218327: 08-19 17:33:12.432 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:64:76, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[00001101-0000-1000-8000-00805f9b34fb, 0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 6d69636f-b6d4-871f-40ac-7f0548477f0e] 行 218334: 08-19 17:33:12.433 1002 4590 4610 V BluetoothAdapterService: isProfileSupported(device=XX:XX:XX:XX:50:86, profile=LE_AUDIO): local_uuids=[0000110a-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 00001112-0000-1000-8000-00805f9b34fb, 0000112f-0000-1000-8000-00805f9b34fb, 00001132-0000-1000-8000-00805f9b34fb], remote_uuids=[0000110b-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb] 行 218389: 08-19 17:33:12.438 1002 4590 4610 I BluetoothAdapterService: getActiveDevices: LeAudio devices: Lead[null] - member_1[null]
最新发布
09-10
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值