【O - Extended Traffic】

含负权有向图单源最短路负环判断
感谢:cherish_lin的BLOG

思路:

  • POJ 仍然没有修好
  • 单源点,有向图,含负权,最短路。
  • 特殊之处在于,需要判断某个点是否在负环内。
  • SPFA,邻接表,标记负环(DFS)。
  • 注意,标记负环的流程:
    1. 找到一个负环内的点
    2. 标记它,对它通往的所有点继续搜索并标记。
    3. (通往最先找到的点的那个点不能标记)。

代码:

​44ms		2332kB


#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#define INF 0x3f3f3f3f

using namespace std;

const int maxn = 205;

int T;
int N,M,Query;
int W[maxn];
int dis[maxn];
int num[maxn];
bool vis[maxn];
bool cir[maxn];

struct EDGE{
	int to;
	int w;
	int fo;
};
EDGE E[maxn * 100];
int tail[maxn];
void ADDEDGE(int i,int u,int v,int w){
	E[i].to = v;
	E[i].w  = w;
	E[i].fo = tail[u];
	tail[u] = i;
	return ;
}

queue<int> Q;

void INIT(){
	memset(dis,INF,sizeof(dis));
	memset(tail,-1,sizeof(tail));
	memset(cir,0,sizeof(cir));
	memset(num,0,sizeof(num));
	memset(vis,0,sizeof(vis));
	return ;
}

void DFS(int id){
	cir[id] = true;
	for(int i=tail[id] ; ~i ; i=E[i].fo){
		if(!cir[E[i].to])
			DFS(E[i].to);
	}
	return ;
}

void SPFA(){
	Q.push(1);vis[1]=1;num[1]=1;dis[1]=0;
	while(Q.size()){
		int cur = Q.front() ; Q.pop(); vis[cur] = false;
		if(cir[cur])//已经标记过负环,skip 
			continue;
		for(int i=tail[cur] ; ~i ; i=E[i].fo){
			int v = E[i].to ;
			if(dis[v] > dis[cur] + E[i].w){
				dis[v] = dis[cur] + E[i].w;
				if(!vis[v]){
					Q.push(v);vis[v]=true;num[v]++;
					if(num[v] == N)
						DFS(v);
				}
			}
		}
	}
	return ;
}

int main(){
	scanf("%d",&T);
	for(int t=1;t<=T;t++){
		INIT();
		scanf("%d",&N);
		for(int i=1;i<=N;i++)
			scanf("%d",&W[i]);
		scanf("%d",&M);
		for(int i=1;i<=M;i++){
			int u,v;
			scanf("%d%d",&u,&v);
			int w = (W[v] - W[u]) ;
			ADDEDGE(i,u,v,w*w*w);
		}
		SPFA();
		scanf("%d",&Query);
		printf("Case %d:\n",t);
		while(Query--){
			int k;scanf("%d",&k);
			if(cir[k] || dis[k] == INF || dis[k] < 3)
				printf("?\n");
			else
				printf("%d\n",dis[k]);
		}
	}
	return 0;
}​
<think>嗯,用户想了解关于脚本参数`--extended`的解释。首先,我需要明确这个参数的具体含义,但不同的应用场景下可能有不同的作用。比如,有些命令行工具或脚本会使用`--extended`来启用扩展功能或显示更多信息。可能用户在使用某个特定工具时遇到了这个参数,或者是在文档中看到但不太理解。 我应该先考虑常见的应用场景。例如,在正则表达式中,`--extended`可能启用扩展的正则语法,比如在`grep`中使用`-E`选项。不过用户提到的是脚本参数,可能是指某个自定义脚本中的选项。这时候需要更通用的解释,同时提醒用户具体行为取决于脚本的实现。 接下来,我需要确认用户是否需要技术细节,比如可能的用例,比如启用额外功能、调试模式、更多输出等。但用户没有提供具体上下文,所以应该保持回答的通用性,并建议用户查阅相关文档或示例。 另外,要注意回答的结构,按照用户的要求分步骤说明。可能的结构是:定义参数的一般用途,常见应用场景,使用示例,注意事项。同时要使用中文,避免使用Markdown格式,但用户提供的系统级指令中提到数学格式,不过这里的问题不涉及数学内容,可能不需要处理。 需要确保回答清晰,帮助用户逐步理解,并强调参数的具体行为可能因脚本而异。最后,提醒用户检查具体文档或提供更多上下文以便更准确的帮助。</think>在脚本或命令行工具中,参数 `--extended` 通常用于启用“扩展功能”或“增强模式”。其具体行为取决于该脚本或工具的设计目的。以下是分步解释: 1. **基础定义** `--extended` 是一个可选标志(flag),用于触发脚本的额外功能。它可能: - 扩展默认功能的覆盖范围 - 启用调试或详细输出 - 加载附加模块或插件 - 解析更复杂的输入格式 2. **常见应用场景** - **正则表达式工具**:例如 `grep --extended`(等效于 `grep -E`)启用扩展正则表达式语法,支持 `+`, `?`, `|` 等元字符。 - **数据处理脚本**:可能通过此参数启用对附加数据列或复杂文件格式的支持。 - **开发工具**:某些编译/构建工具用 `--extended` 开启实验性功能或性能分析。 3. **使用示例** 假设某图像处理脚本支持基础滤镜和扩展滤镜: ```bash # 基础命令:仅应用默认滤镜 ./image_processor input.jpg --filter blur # 添加 --extended 后可使用高级滤镜 ./image_processor input.jpg --filter neural_enhance --extended ``` 4. **注意事项** - **兼容性**:扩展功能可能依赖特定环境或版本,需检查文档。 - **性能影响**:扩展模式可能增加资源消耗(如内存、计算时间)。 - **行为差异**:不同工具的 `--extended` 实现可能完全不同,需通过 `--help` 或手册确认。 建议通过以下命令获取具体工具的说明: ```bash your_script --help | grep --color -A 2 "--extended" ``` 若需进一步分析,请提供具体脚本名称或上下文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值