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 ;
}

最新文章

  1. SparkStreaming运行出现 java.lang.NoClassDefFoundError: org/apache/htrace/Trace 错误
  2. HDU 5831 Rikka with Parenthesis II (贪心) -2016杭电多校联合第8场
  3. dataURI V.S. CSS Sprites 移动端
  4. 【C#】实现按Windows排序方式排序
  5. Cite a Website in Paper 论文中引用网页的格式
  6. matlab求距一个数最近的奇(偶)数
  7. hbase运维
  8. Wpf TextChanged事件导致死循环,事件触发循环问题
  9. GM8180启动过程调试
  10. Unity UGUI图文混排源码(二)
  11. Golang中使用lua进行扩展
  12. [Swift]LeetCode69. x 的平方根 | Sqrt(x)
  13. jquery $.ajax({});参数详解
  14. 浅谈Object.assign()
  15. Qt: error: symbol(s) not found for architecture x86_64问题
  16. Appium学习笔记3_Genymotion模拟器安装
  17. BZOJ.2938.[POI2000]病毒(AC自动机)
  18. css如何设置label的字间距
  19. hexo + Github 搭建问题综述
  20. 使用 css 的 keyframe 实现 loading 动画

热门文章

  1. 【转】Buff机制及其实际运用
  2. chrome编辑器与截图
  3. JavaScriptSerializer的实现-常用JsonHelper类
  4. Linux 150命令之 文件和目录操作命令 cd pwd cp mv touch
  5. Rightmost Digit(最后一位数字)
  6. “Hello world!”团队第三周贡献分规则
  7. ACM 第十一天
  8. 安装配置erlang_db_driver
  9. PokeCats开发者日志(十三)
  10. [C/C++] C++类对象创建问题