首页 > 其他分享 >topo sort

topo sort

时间:2024-10-06 08:49:22浏览次数:7  
标签:sort cout int cin topo vis flag out

P1038 神经网络,拓扑排序板子题

include <bits/stdc++.h>

using namespace std;
const int N=1e2+10;
struct node
{
int v,w;
};
vector g[N];
queue q;
int n,m;
bool flag=true;
int c[N],in[N],out[N],vis[N];
void topsort()
{
while(!q.empty())
{
int u=q.front();
q.pop();
if(c[u]<=0) continue;
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i].v;
c[v]+=c[u]*g[u][i].w;
if(!(--in[v]))
{
q.push(v);
// vis[v]=1;
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("xxx.in","r",stdin);
//freopen("xxx.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int x;
cin>>c[i]>>x;
if(c[i]>0)
{
q.push(i);
vis[i]=1;
}
else
{
c[i]-=x;
}
}
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
g[u].push_back({v,w});
out[u]=1;
in[v]++;
}
topsort();
for(int i=1;i<=n;i++)
{
if(c[i]>0&&!out[i])
{
flag=false;
cout<<i<<' '<<c[i]<<'\n';
}
}
if(flag) cout<<"NULL"<<endl;
return 0;
}

标签:sort,cout,int,cin,topo,vis,flag,out
From: https://www.cnblogs.com/After17/p/18448841

相关文章

  • c语言模拟实现qsort
    要想模拟首先qsort函数首先我们应该知道这个函数的功能是什么接下来我为大家引入一个列子我们想要实现一组有序数的升序可以通过冒泡排序法思想是 两两相邻元素进行比较 代码如下 通过冒泡排序法 #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>voidbubbl......
  • Mergesort Strikes Back
    MergesortStrikesBack题意给你两个正整数\(n,k\),问长度为\(n\)的随机排列,做深度为\(k\)的归并排序(\(k=1\)就是不排)后,期望逆序对个数。对给定素数取模。思路首先如果\(k\ge\logn\)就可以排好序,逆序对个数为\(0\)。否则,假设排列给定,那么最后一次分治形成的若干个......
  • 七、Redis之sorted set
    sortedset也是Redis中常用的类型。可以用来解决热搜,排名前十等问题。ZADDZADDkey[NX|XX][GT|LT][CH][INCR]scoremember[scoremember...]zadd将多个分数和元素对添加到sortedset中。还有些选项影响了zadd的行为:XX:仅更新已存在的元素。不要添加新元素。NX:只添加......
  • opencascade TopoDS_AlertWithShape源码学习
    opencascadeTopoDS_AlertWithShape前言一种特定的对象(我们称之为Alert对象),该对象在其内部字段中存储了一个TopoDS形状方法1带有形状参数的构造函数TopoDS_AlertWithShape(constTopoDS_Shape&theShape);2返回包含的形状TopoDS_Shape&GetShape();3设置形状voidSe......
  • opencascade TopoDS_Shape源码学习【重中之重】
    opencascadeTopoDS_Shape前言描述了一个形状,它引用了一个基础形状,该基础形状有可能被赋予一个位置和方向为基础形状提供了一个位置,定义了它在本地坐标系中的位置为基础形状提供了一个方向,这是从几何学的角度(而不是相对于其他形状的方向)来定义的。注意:如果一个形状引用的基础......
  • opencascade TopoDS_Iterator源码学习拓扑迭代器
    opencascadeTopoDS_Iterator前言遍历给定TopoDS_Shape对象的底层形状,提供对其组件子形状的访问。每个组件形状作为带有方向的TopoDS_Shape返回,并且由原始值和相对值组成的复合体。方法1//!创建一个空的迭代器。TopoDS_Iterator();2//!子形状上创建一个迭代器。如......
  • 【C语言】qsort库函数
    使用qsort排数组升序:代码:#include<stdio.h>#include<stdlib.h>intcmp_int(constvoid*e1,constvoid*e2){ return*(int*)e1-*(int*)e2;}//使用qsort排升序voidtest1(){ intarr[]={9,8,7,6,5,4,3,2,1,0}; intsz=sizeof(arr)/sizeof(arr[0]); ......
  • Java 冒泡排序 (Bubble Sort) ✨ 代码版 + Emoji讲解
    冒泡排序的基本思想就是让“大泡泡”不断往上浮,直到整个数组像泡泡浴一样排序好!......
  • 9.27 代码练习,以及教你写自己的qsort函数
    学生成绩系统代码include<stdio.h>typedefstructStudent{intnum;charname[50];intgrade[10];}stu;intcmp(intcount[],int*n){intmax=0;for(inti=0;i<*n;i++){if(count[i]>max){max=count[i];}}returnmax;}intmain(){int......
  • 2024.9.25 Python,单词替换,优美的排列 II,sort的用法前K个高频单词,广度优先搜索腐烂的橘
    1.单词替换在英语中,我们有一个叫做词根(root)的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为衍生词(derivative)。例如,词根help,跟随着继承词“ful”,可以形成新的单词“helpful”。现在,给定一个由许多词根组成的词典dictionary和......