CCF CSP202009-3点亮数字人生
1、利用入度计算拓扑序列,不能拓扑序列就是有环,存储的点为输入为n,元器件为n+m
2、根据拓扑序列计算每个元器件所需的输入的值
3、输出相应元器件的值
#include<bits/stdc++.h>
using namespace std;
const int maxn = 3010;
vector<int>G[maxn],line,V[maxn];
string op[maxn];
int ans[10010][maxn],degree[maxn];
bool vis[maxn];
int n,m;
bool topu(){
int count = 0;
queue<int>q;
for(int i = 1; i <= n+m; i++){
if(degree[i] == 0) {
q.push(i);
line.push_back(i);
count++;
vis[i] = true;
}
}
while(!q.empty()){
int top = q.front();
q.pop();
for(int i = 0; i < V[top].size(); i++){
degree[V[top][i]]--;
if(degree[V[top][i]] == 0 && vis[V[top][i]] == false){
q.push(V[top][i]);
line.push_back(V[top][i]);
vis[V[top][i]]