题意:n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0。这些牛的距离存在着一些约束关系:1.有ml组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 <= w。2.有md组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 >= w。问如果这n头无法排成队伍,则输出-1,如果牛[1]和牛[n]的距离可以无限远,则输出-2,否则则输出牛[1]和牛[n]之间的最大距离。
代码:
View Code
1 #include<iostream> 2 #include<string> 3 #include<queue> 4 #include<map> 5 #include<cmath> 6 #include<stack> 7 #include<algorithm> 8 using namespace std; 9 // 队列实现,而且有负权回路判断—POJ 3169 Layout 10 11 const int INF = 0x3F3F3F3F; 12 const int V = 1001; 13 const int E = 20001; 14 int pnt[E], cost[E], nxt[E]; 15 int e, head[V], dist[V]; 16 bool vis[V]; 17 int cnt[V]; // 入队列次数 18 queue<int> que; 19 20 void init(){ 21 e = 0; 22 memset(head, -1, sizeof(head)); 23 } 24 25 inline void addedge(int u, int v, int c){ 26 pnt[e] = v; cost[e] = c; nxt[e] = head[u]; head[u] = e++; 27 } 28 29 int SPFA(int src, int n){ 30 int i,u,v; 31 32 for( i=1; i <= n; ++i ) { 33 dist[i] = INF;cnt[i]=0;vis[i]=1; 34 } 35 36 while(!que.empty())que.pop(); 37 que.push(src);vis[src] =0; 38 dist[src] = 0; 39 ++cnt[src]; 40 41 while( !que.empty() ){ 42 u = que.front();que.pop(); vis[u] =1; 43 for( i=head[u]; i != -1; i=nxt[i] ){ 44 v = pnt[i]; 45 if(dist[v] > dist[u] + cost[i] ){ 46 dist[v] = dist[u] + cost[i]; 47 if(vis[v]){ 48 que.push(v);vis[v]=0; 49 if((++cnt[v])>n)return -1;//出现负权回路 50 } 51 } 52 } 53 } 54 if( dist[n] == INF ) return -2; // src与n不可达 55 return dist[n]; // 返回src到n的最短距离 56 } 57 58 59 int main(){ 60 int n, ml, md; 61 while( scanf("%d%d%d", &n, &ml, &md) != EOF ){ 62 int a, b, c; 63 init(); 64 while(ml--){ 65 scanf("%d%d%d", &a, &b, &c); 66 if( a > b) swap(a, b); 67 addedge(a, b, c); 68 } 69 while(md--){ 70 scanf("%d%d%d", &a, &b, &c); 71 if( a < b ) swap(a, b); 72 addedge(a, b, -c); 73 } 74 75 printf("%d\n", SPFA(1, n)); 76 } 77 return 0; 78 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥