UVa 924 - Spreading The News

题目:消息在人群中中的传播,给定一个传递关系,每个消息传播需要一天。

            给出不同的消息出发点,问同时最多有多少人在传播消息,那最早是第几天。

分析:最短路,搜索。利用bfs算法计算出每个人接收消息的时间,利用时间计数,统计查询。

注意:有向图,边不是双向的;memset在string.h文件中。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

int friends[2505][16];
int dist[2505];
int visited[2505];
int counter[2505]; 
int queue[2505];
int employe[65];

//邻接表
typedef struct nodee {
	int	   point;
	nodee* next;
}enode;
enode *head[2505];
enode  node[40005];
int    e_size;

void add( int a, int b )
{
	node[e_size].point = b;
	node[e_size].next = head[a];
	head[a] = &node[e_size ++];
}
//end 邻接表

void bfs( int s, int n )
{
	for ( int i = 0 ; i < n ; ++ i ) {
		visited[i] = 0;
		counter[i] = 0;
		dist[i] = 2505;
	}
	
	int move = 0,save = 0;
	queue[save ++] = s;
	visited[s] = 1;
	dist[s] = 0;
	while ( move < save ) {
		int now = queue[move ++];
		for ( enode* p = head[now] ; p ; p = p->next )
			if ( !visited[p->point] && dist[p->point] > dist[now] + 1 ) {
				dist[p->point] = dist[now] + 1;
				visited[p->point] = 1;
				queue[save ++] = p->point;
			}
	}
	
	for ( int i = 0 ; i < n ; ++ i )
		counter[dist[i]] ++;
	
	int max = 0,space = 0;
	for ( int i = 1 ; i < n ; ++ i )
		if ( counter[i] > max ) {
			max = counter[i];
			space = i;
		}
	
	if ( max ) 
		printf("%d %d\n",max,space);
	else printf("0\n");
}

int main()
{
	int E,N,T;
	while ( scanf("%d",&E) != EOF ) {
		for ( int i = 0 ; i < E ; ++ i ) {
			scanf("%d",&friends[i][0]);
			for ( int j = 1 ; j <= friends[i][0] ; ++ j )
				scanf("%d",&friends[i][j]);
		}
		
		//建图 
		e_size = 0;
		memset( head, 0, sizeof(head) );
		memset( node, 0, sizeof(node) );
		for ( int i = 0 ; i < E ; ++ i )
		for ( int j = 1 ; j <= friends[i][0] ; ++ j )
			add( i, friends[i][j] );
		
		scanf("%d",&T);
		for ( int i = 0 ; i < T ; ++ i ) {
			scanf("%d",&employe[i]);
			bfs( employe[i], E );
		}
		
	}	
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本
matlab代码function probeData(varargin)if (nargin == 1) settings = deal(varargin{1}); fileNameStr = settings.fileName; elseif (nargin == 2) [fileNameStr, settings] = deal(varargin{1:2}); if ~ischar(fileNameStr) error('File name must be a string'); end else error('Incorect number of arguments'); end[fid, message] = fopen(fileNameStr, 'rb'); if (fid > 0) % Move the starting point of processing. Can be used to start the % signal processing at any point in the data record (e.g. for long % records). fseek(fid, settings.skipNumberOfBytes, 'bof'); % Find number of samples per spreading code samplesPerCode = round(settings.samplingFreq / ... (settings.codeFreqBasis / settings.codeLength)); if (settings.fileType==1) dataAdaptCoeff=1; else dataAdaptCoeff=2; end % Read 100ms of signal [data, count] = fread(fid, [1, dataAdaptCoeff100samplesPerCode], settings.dataType); fclose(fid); if (count < dataAdaptCoeff100samplesPerCode) % The file is to short error('Could not read enough data from the data file.'); end %--- Initialization --------------------------------------------------- figure(100); clf(100); timeScale = 0 : 1/settings.samplingFreq : 5e-3; %--- Time domain plot ------------------------------------------------- if (settings.fileType==1) subplot(2, 2, 3); plot(1000 * timeScale(1:round(samplesPerCode/2)), ... data(1:round(samplesPerCode/2))); axis tight; grid on; title ('Time domain plot'); xlabel('Time (ms)'); ylabel('Amplitude'); else data=data(1:2:end) + 1i .* data(2:2:end); subplot(3, 2, 4); plot(1000 * timeScale(1:round(samplesPerCode/2)), ... real(data(1:round(samplesPerCode/2)))); axis tight; grid on; title ('Time domain plot (I)'); xlabel('Time (ms)'); ylabel('Amplitude'); subplot(3, 2, 3); plot(1000 * timeScale(1:round(samplesPerCode/2)), ... imag(data(1:round(samplesPerCode/2)))); axis tight; grid on; title ('Time domain plot (Q)'); xlabel('Time (ms)'); ylabel('Amplitude'); end %--- Frequency domain plot -------------------------------------------- if (settings.fileType==1) %Real Data subplot(2,2,1:2); pwelch(data, 32768, 2048, 32768, settings.samplingFreq/1e6) else % I/Q Data subplot(3,2,1:2); [sigspec,freqv]=pwelch(data, 32768, 2048, 32768, settings.samplingFreq,'twosided'); plot(([-(freqv(length(freqv)/2:-1:1));freqv(1:length(freqv)/2)])/1e6, ... 10*log10([sigspec(length(freqv)/2+1:end); sigspec(1:length(freqv)/2)])); end axis tight; grid on; title ('Frequency domain plot'); xlabel('Frequency (MHz)'); ylabel('Magnitude'); %--- Histogram -------------------------------------------------------- if (settings.fileType == 1) subplot(2, 2, 4); hist(data, -128:128) dmax = max(abs(data)) + 1; axis tight; adata = axis; axis([-dmax dmax adata(3) adata(4)]); grid on; title ('Histogram'); xlabel('Bin'); ylabel('Number in bin'); else subplot(3, 2, 6); hist(real(data), -128:128) dmax = max(abs(data)) + 1; axis tight; adata = axis; axis([-dmax dmax adata(3) adata(4)]); grid on; title ('Histogram (I)'); xlabel('Bin'); ylabel('Number in bin'); subplot(3, 2, 5); hist(imag(data), -128:128) dmax = max(abs(data)) + 1; axis tight; adata = axis; axis([-dmax dmax adata(3) adata(4)]); grid on; title ('Histogram (Q)'); xlabel('Bin'); ylabel('Number in bin'); end else %=== Error while opening the data file ================================ error('Unable to read file %s: %s.', fileNameStr, message); end % if (fid > 0)翻译成python
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值