ACM2647拓扑排序逆运算
2024-08-22 08:48:46
2647题是对工人排序问题,不是从头到尾排序,而是从尾到头排序;
代码中用到vector和queue容器,权当练习。
用广搜进行拓扑排序的逆运算。
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
const int maxn=;
int main()
{
int n,m;
int sum[maxn];
int out[maxn];
while(cin>>n>>m)
{
int a,b;
vector<int>next[maxn];
queue<int>q;
memset(sum,,sizeof(sum));
memset(out,,sizeof(out));
for(int i=;i<m;i++)
{
cin>>a>>b;
next[b].push_back(a);
out[a]++;
}
for(int i=;i<=n;i++)
{
if(out[i]==)
{
q.push(i);
sum[i]=;
}
}
if(q.empty())
{
cout<<-<<endl;
continue;
}
int cnt=n;
while(!q.empty())
{
int v=q.front();
q.pop();
cnt--;
for(int i=;i<next[v].size();i++)
{
out[next[v][i]]--;
if(out[next[v][i]]==)
{
q.push(next[v][i]);
sum[next[v][i]]=sum[v]+;
}
}
}
if(cnt>)
{
cout<<-<<endl;
continue;
}
int ans=;
for(int i=;i<=n;i++)
{
ans+=sum[i];
}
cout<<ans<<endl;
}
return ;
}
最新文章
- SparkStreaming运行出现 java.lang.NoClassDefFoundError: org/apache/htrace/Trace 错误
- HDU 5831 Rikka with Parenthesis II (贪心) -2016杭电多校联合第8场
- dataURI V.S. CSS Sprites 移动端
- 【C#】实现按Windows排序方式排序
- Cite a Website in Paper 论文中引用网页的格式
- matlab求距一个数最近的奇(偶)数
- hbase运维
- Wpf TextChanged事件导致死循环,事件触发循环问题
- GM8180启动过程调试
- Unity UGUI图文混排源码(二)
- Golang中使用lua进行扩展
- [Swift]LeetCode69. x 的平方根 | Sqrt(x)
- jquery $.ajax({});参数详解
- 浅谈Object.assign()
- Qt: error: symbol(s) not found for architecture x86_64问题
- Appium学习笔记3_Genymotion模拟器安装
- BZOJ.2938.[POI2000]病毒(AC自动机)
- css如何设置label的字间距
- hexo + Github 搭建问题综述
- 使用 css 的 keyframe 实现 loading 动画
热门文章
- 【转】Buff机制及其实际运用
- chrome编辑器与截图
- JavaScriptSerializer的实现-常用JsonHelper类
- Linux 150命令之 文件和目录操作命令 cd pwd cp mv touch
- Rightmost Digit(最后一位数字)
- “Hello world!”团队第三周贡献分规则
- ACM 第十一天
- 安装配置erlang_db_driver
- PokeCats开发者日志(十三)
- [C/C++] C++类对象创建问题