题目:

【问题描述】

给你一个有向图,有 N 个点,标号为 0 到 N -1,图中的每条边有个权值,每次你经过一条边,它的权值将被记入你的得分,如果同样的边被经过多次,它的权值每次都将被记入总分,权值为-499 到 499之间的整数,图中没有自环,现在你要从点 0 到点 1,这项任务必须在时限 T 或 T 之前完成,时间以秒记,每一秒你一定要走 S 步(不多不少),一步的含义是指从当前所在的点 U 沿着某条边( U , V )到达点 V ,若S>1的话,再沿着点V往(V,X)到达点X。你的目标就是完成任务并且得到尽量多的分数。

【输入格式】

第一行一个整数 N 表示该有向图的点数。接下来 N 行,每行有 N 个整数,第 i 行第 j 个数描述了点 i -1 到点 j- 1 之间的边的关系,如果是 0 ,表示它们之间没有边,否则这个数就是 i- > j 这条边的边权,保证第 i 行第 i 个数为 0。最后一行两个整数 S , T ,意义如题目所述。

【输出格式】

仅输出一行,如果不能完成,输出 IMPOSSIBLE,否则输出能够获得的最大分数。

【输入样例】

2

0 1

1 0

3 2

【输出样例】

3

【数据范围】

30%的数据,1≤ N , S , T ≤10。

100%的数据,1≤ N ≤50,1≤ S ≤100,1≤ T ≤109 。

题解:用f[i][j][t]表示从i到j,走t次的最大值

矩阵更新,预处理每两个点走一次的最大值

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL inf=0x3fffffffffffffff;
int n,S,T;
LL Ans;
struct Ma
{
LL val[][];
void clear()
{
for (int i=;i<n;i++)
for (int j=;j<n;j++)val[i][j]=-inf;
for (int i=;i<n;i++) val[i][i]=;
}
void write()
{
for (int i=;i<n;i++)
{
for (int j=;j<n;j++)printf("%lld ",val[i][j]);
puts("");
}
}
}M1,M2,M3,M4;
Ma times(Ma a,Ma b)
{
Ma c;
for (int i=;i<n;i++)
for (int j=;j<n;j++)
{
c.val[i][j] = -inf;
for (int k=;k<n;k++)
{
if (a.val[i][k]==-inf||b.val[k][j]==-inf)
continue;
c.val[i][j]=max(c.val[i][j],
a.val[i][k]+b.val[k][j]);
}
}
return c;
}
Ma Pow(Ma a,int b)
{
Ma Ans;
Ans.clear();
for (;b;b>>=,a=times(a,a))
if (b&) Ans=times(Ans,a);
return Ans;
}
void solve()
{
M3=Pow(M2,T-*n);
Ans=max(Ans,M3.val[][]);
for (int i=T-*n+;i<=T;i++)
{
M3=times(M3,M2);
Ans=max(Ans,M3.val[][]);
}
}
int main()
{
freopen("graph.in","r",stdin);
freopen("graph.out","w",stdout);
scanf("%d",&n);
for (int i=;i<n;i++)
for (int j=;j<n;j++)
{
scanf("%lld",&M1.val[i][j]);
if (M1.val[i][j]==)M1.val[i][j]=-inf;
}
scanf("%d%d",&S,&T);
M2=Pow(M1,S);
Ans=-inf;
M4.clear();
for (int i=;i<=min(T,*n);i++)
{
M4=times(M4,M2);
Ans=max(Ans,M4.val[][]);
}
if (T>=*n+) solve();
if (Ans==-inf) puts("IMPOSSIBLE");
else printf("%lld\n",Ans);
return ;
}

Graph的更多相关文章

  1. [开发笔记] Graph Databases on developing

    TimeWall is a graph databases github It be used to apply mathematic model and social network with gr ...

  2. Introduction to graph theory 图论/脑网络基础

    Source: Connected Brain Figure above: Bullmore E, Sporns O. Complex brain networks: graph theoretica ...

  3. POJ 2125 Destroying the Graph 二分图最小点权覆盖

    Destroying The Graph Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8198   Accepted: 2 ...

  4. [LeetCode] Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  5. [LeetCode] Graph Valid Tree 图验证树

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  6. [LeetCode] Clone Graph 无向图的复制

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...

  7. 讲座:Influence maximization on big social graph

    Influence maximization on big social graph Fanju PPT链接: social influence booming of online social ne ...

  8. zabbix利用api批量添加item,并且批量配置添加graph

    关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...

  9. Theano Graph Structure

    Graph Structure Graph Definition theano's symbolic mathematical computation, which is composed of: A ...

  10. 纸上谈兵: 图 (graph)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 图(graph)是一种比较松散的数据结构.它有一些节点(vertice),在某些节 ...

随机推荐

  1. SpringJDBC源码分析记录

    我们使用JdbcTemplate时,调用的query方法为: public <T> List<T> query(String sql, @Nullable Object[] a ...

  2. UDP的socketasynceventargs

    C# 使用 SocketAsyncEventArgs 实现UdpSocket系列 http://www.cnblogs.com/zwq194/archive/2012/10/30/2746393.ht ...

  3. 同步TreeView中父结点和子结点的状态[以及Treeview的bug]

    此代码仅仅是二级结点,即父结点下面只有一层子结点,只有两层结构 /// <summary> /// 某个结点的CheckBox被选中 /// </summary> /// &l ...

  4. winform中splitter的用法

    1.将winform分为三列 整个窗体分成可以自动调节的三列的做法:1.往窗体上丢两个panel控件其中:panelLeft——设置Dock属性为“left”,并调节好其宽度panelRight——设 ...

  5. 【第二十四章】 springboot注入servlet

    问:有了springMVC,为什么还要用servlet?有了servlet3的注解,为什么还要使用ServletRegistrationBean注入的方式? 使用场景:在有些场景下,比如我们要使用hy ...

  6. Codeforces Round #527 (Div. 3)

    一场div3... 由于不计rating,所以打的比较浪,zhy直接开了个小号来掉分,于是他AK做出来了许多神仙题,但是在每一个程序里都是这么写的: 但是..sbzhy每题交了两次,第一遍都是对的,结 ...

  7. 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

    UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS  ICLR 2 ...

  8. CSS3 动画的一些属性

    定义式 @keyframes 动画名称{ from{ } to{ } } 调用式 动画类似函数,只定义不调用是没效果的,所以要配合调用式使用. animation: 动画名称 动画时间 延时 时间曲线 ...

  9. js 字符串匹配

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. jenkins网页报错,Unable to create the home directory ‘/usr/share/tomcat7/.jenkins’. This is most likely a permission problem

    cd /usr/share/tomcat7 sudo mkdir .jenkins sudo chown tomcat7:nogroup .jenkins 执行以上操作,重启解决