题意:n个点(从1-n编号)

m条边

下面m行 u v dis 表示双向边u v的距离

n个点表示 每个点被势力1或2占据

这里保证1 城市由势力1占据,2城市由势力2占据

思路:

求2遍spfa()

从1城市开始求所有 走到所有都是势力1的城市的距离,存在d[1]数组中,d[1][ i ] 表示经过 i 城市任意都是势力1占领的城市的点能到达 1点的最短距离

再由2城市跑一遍spfa ,求出 2势力占领的 距离2 城市最近的距离

最后ans=Min(ans, d[ 1 ] [ i ] + d[ 2 ] [ j ] + dis[ i ][ j ] )

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 605
#define INF 99999999 using namespace std; struct node{
int to,nex;
}edge[20005]; int edgenum,head[N]; int dis[N][N],n,ans;
int zhen[N],d[3][N];
bool inq[N];
inline int Min(int a,int b){return a>b?b:a;}
void addedge(int u,int v){
edge[edgenum].to=v;
edge[edgenum].nex=head[u];
head[u]=edgenum++;
}
void spfa(int x,int other){
for(int i=1;i<=n;i++)d[x][i]=INF;
queue<int>q;while(!q.empty())q.pop();
memset(inq,0,sizeof(inq)); d[x][x]=0;
q.push(x); inq[x]=1; while(!q.empty())
{
int u=q.front();q.pop(); inq[u]=0;
for(int i=head[u];i!=-1;i=edge[i].nex)
{
int v=edge[i].to;
if(zhen[u]==zhen[v] && d[x][v]>d[x][u]+dis[u][v] )
{
d[x][v]=d[x][u]+dis[u][v];
if(!inq[v] && v!=other)
inq[v]=true, q.push(v);
}
}
}
} int main(){
int i,m;
while(scanf("%d",&n),n)
{
scanf("%d",&m);
memset(head,-1,sizeof(head)); memset(dis,-1,sizeof(dis));
edgenum=0; while(m--){
int u,v,dd;
scanf("%d%d%d",&u,&v,&dd);
if(dis[u][v]==-1)//去重边
addedge(u,v),addedge(v,u),dis[u][v]=dis[v][u]=dd;
else dis[u][v]=dis[v][u]=Min(dis[u][v],dd);
}
for(i=1;i<=n;i++)scanf("%d",&zhen[i]); ans=INF;
spfa(1,2);
spfa(2,1);
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(zhen[i]!=zhen[j] && dis[i][j]!=-1)
ans=Min(ans,d[1][i]+d[2][j]+dis[i][j]); if(ans>INF/2)ans=-1;
printf("%d\n",ans);
}
return 0;
}

poj 3767 I Wanna Go Home的更多相关文章

  1. poj 1236 Network of Schools(又是强连通分量+缩点)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  2. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  3. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  4. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

  5. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...

  6. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

  7. POJ 2739. Sum of Consecutive Prime Numbers

    Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20050 ...

  8. POJ 2255. Tree Recovery

    Tree Recovery Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11939   Accepted: 7493 De ...

  9. POJ 2752 Seek the Name, Seek the Fame [kmp]

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17898   Ac ...

随机推荐

  1. Vmware中Ubuntu挂ISO到虚拟光驱

    Ubuntu 下挂ISO到虚拟光驱的方法 https://i.cnblogs.com/EditPosts.aspx?opt=1 如果要ubuntu找到rpm软件包,需要把iso挂载到/media/cd ...

  2. CentOS-6.3安装配置JDK-7或 JDK-6

    链接地址:http://blog.csdn.net/shuixin536/article/details/8954000 http://www.cnblogs.com/zhoulf/archive/2 ...

  3. JavaSE学习总结第01天_Java概述

      01.01 计算机概述 计算机(Computer):全称电子计算机,俗称电脑. 是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 由硬件和软件所组成,没有安装任何软件的计算机称 ...

  4. linux下出现java.net.UnknownHostException

    项目部署在win环境下没问题,但是在迁移生产环境的时候出现Java.net.UnknowHostException 原因在于etc/hosts 文件没有配置域名映射,使用vi编辑器加上服务器ip 以及 ...

  5. CGI PHP安装

    ./configure --with-php-config=/usr/local/php/bin/php-config--with-pdo-mysql=/usr/local/mysql PDO——MY ...

  6. struts2 DMI问题

    最新开始学习struts2,在官网上下载的最新的struts2(2.3.15.2), jar包,在使用动态方法调用的时候老是报错,错误代码如下HTTP Status 404 - There is no ...

  7. 怎样在VC里面使用graphics.h绘图

    网上很多绘图程序和小游戏程序都是用的 TC,在 VC 下编译时提示错误:fatal error C1083: Cannot open include file: 'graphics.h': No su ...

  8. 关于R.styleable的问题

    原来想直接想调用程序的东西,但是使用R.styleable的时候 eclipse不能解析了,后来发现原来被删除了此方法 public ImageAdapter(Context c) { mContex ...

  9. [置顶] IT屌丝的离职申请

          各位好,很遗憾在如此关键的时刻和大家说告别.我为金三也付出了近一年的心血,几乎没怎么休过令人舒心的周末,熬了多少夜更不用说,如此的离开,请相信我也非常心痛.       尽管直到现在我的水 ...

  10. Python: 在Unicode和普通字符串之间转换

    Unicode字符串可以用多种方式编码为普通字符串, 依照你所选择的编码(encoding): <!-- Inject Script Filtered --> Toggle line nu ...