POJ3268

题意很简单 正向图跑一遍SPFA 反向图再跑一边SPFA 找最大值即可。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
using namespace std;
const int maxn=1000+1,maxm=100000+1,INF=1e+8;
int len[maxn][maxn],len1[maxn][maxn],dist[maxn],dist1[maxn];
vector<int> path[maxn],path1[maxn];
int n,m,source;
void SPFA(int dist[],int d[][maxn],vector<int>son[],int source)
{
bool inq[maxn];
int times[maxn];
memset(inq,0,sizeof(inq));
memset(times,0,sizeof(times));
for(int i=1;i<=n;i++)
dist[i]=INF;
dist[source]=0;
queue<int>q;
q.push(source);
times[source]++;
inq[source]=true;
while(!q.empty())
{
int now=q.front();
q.pop();
inq[now]=false;
for(int i=0;i<son[now].size();i++)
{
int np=son[now][i];
if(dist[np]>dist[now]+d[now][np])
{
dist[np]=dist[now]+d[now][np]; if(times[np]>n)return;
if(!inq[np]){times[np]++;q.push(np);}
}
}
}
} int main()
{freopen("t.txt","r",stdin);
scanf("%d%d%d",&n,&m,&source);
for(int i=0;i<m;i++)
{
int a,b,l;
scanf("%d%d%d",&a,&b,&l);
path[a].push_back(b);len[a][b]=l;
path1[b].push_back(a);len1[b][a]=l;
}
SPFA(dist,len,path,source);
SPFA(dist1,len1,path1,source);
int ans=0;
for(int i=1;i<=n;i++)
{
if((dist[i]+dist1[i])>ans)ans=dist[i]+dist1[i];
}
printf("%d\n",ans);
return 0;
}

  

最新文章

  1. MySQL 事物控制和锁定语句
  2. 发邮件 和 excel导出中文文件名
  3. MSSQL 和 REDIS的数据类型对应关系
  4. AT&amp;T ASSEMBLY FOR LINUX AND MAC (SYS_FORK)
  5. android 事件
  6. 【转】Entity Systems
  7. iOS之Sqlite和FMDB
  8. 开发备必:WEB前端开发规范文档
  9. Linux系统编程初探系列之一:文件编程
  10. Spring 与 mybatis整合 Error parsing Mapper XML. Cause: java.lang.NullPointerException
  11. leetcode range sum query
  12. Java第十四周学习总结
  13. 技术笔记1:java.sql.SQLException: Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password)
  14. white-space:pre-wrap和word-break:break-all;
  15. 受欢迎的牛 [HAOI2006] [强连通] [传递闭包(划)]
  16. axios基础
  17. JAVA框架Struts2 Action类
  18. Java 多线程(三)之线程状态及其验证
  19. docker容器日志在哪?以及清理命令
  20. 在 Linux服务器中安装 Python 3.6

热门文章

  1. 禁止foreach循环使用remove/add----快速失败
  2. js继承的方式
  3. 基于springmvc、ajax,后台连接数据库的增删改查
  4. Openstack manila的一些命令
  5. Linux—Ubuntu14.0.5配置JAVA环境
  6. linux cut-连接文件并打印到标准输出设备上
  7. buf.readUIntBE()
  8. python3连接mysql 稍微进阶 + 日期处理
  9. HDU 1274 递归拼接字符串
  10. 转载 - C++ - placement new