2011成都网赛 / 1009 - The Social Network

本文分享了一道ACM竞赛中的图论题目解析过程,重点介绍了使用广度优先搜索算法来解决特定类型的问题。文章详细说明了如何通过构建图模型、节点连接以及遍历算法来找出具有最大联系次数的节点,并按字母顺序输出这些关键节点。


一眼就看出是水题,相当清晰。但是比赛的时候RE了一次。应该是错在输入的名字总数上界应该是2*n 而不是n,把上界调大就A了。


代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<map>
#include<queue>
#include<algorithm>
#include<string>
using namespace std;

#define MAXN 1010*2
vector<int> G[MAXN];
string a[MAXN];				//存名字
map<string, int>vis;
int num;
int n, m;

int vv[MAXN];		//访问标记
queue<int> q;


int addvec(string x)
{
	if(vis[x]) {return vis[x]; }
	else
	{
		vis[x] = num;	a[num++] = x;	return num-1;
	}
}

int getnum(string x) { return vis[x]; }

void clear()
{
	for(int i=0; i<=n*2; i++)	if(!G[i].empty())
	{
		G[i].clear();
	}
}

string ans[MAXN];
int cnt[MAXN];
int bfs(int x)
{
	int ansn=0;
	int find=0;
	memset(vv, 0, sizeof(vv));
	memset(cnt, 0, sizeof(cnt));
	vv[x] = 1;
	for(int i=0; i<(int)G[x].size(); i++)	if(!vv[G[x][i]])
	{
		int v = G[x][i];
		vv[v] = 1;
		q.push(v);
	}
	int maxx=0;
	while(!q.empty())
	{
		int u = q.front();	q.pop();
		for(int i=0; i<(int)G[u].size(); i++) if(!vv[G[u][i]])
		{
			int v = G[u][i];
			if(!cnt[v]) 
			{
				cnt[v]=1;
				maxx = max(maxx, cnt[v]);
				ans[ansn].clear();
				ans[ansn++] += a[v];
			}
			else
			{
				cnt[v]++;
				maxx = max(maxx, cnt[v]);
			}
			find = 1;
		}
	}
	sort(ans, ans+ansn);
	int flag=0;
	for(int i=0; i<ansn; i++)
	{
		if(cnt[getnum(ans[i])] != maxx) continue;
		if(flag) { cout<<" "; }
		flag=1;
		cout<<ans[i];
	}
	return find;
}

void solve()
{
	for(int i=0; i<m; i++)
	{
		string t;	cin>>t;
		if(bfs(getnum(t)))
		{
			cout<<endl;
		}
		else cout<<"-"<<endl;
	}
}

int main()
{
	int t;	cin>>t;
	for(int i=0; i<t; i++)
	{
		printf("Case %d:\n", i+1);
		
		num=1;
		if(!vis.empty()) vis.clear();
		clear();

		cin>>n>>m;
		for(int j=0; j<n; j++)
		{
			string t1, t2;
			cin>>t1>>t2;

			int u = addvec(t1);
			int v = addvec(t2);
			G[u].push_back(v);
			G[v].push_back(u);
		}
		solve();
	}
}


<think> 我们已经在之前的对话中确认了模型名称:IDEA-CCNL/Ziya-BART-ES-Social 用户现在需要该模型的下载地址。 根据Hugging Face的惯例,模型的下载地址通常是其模型卡片页面的URL,同时也可以通过Hugging Face的模型仓库进行下载。 回顾引用部分,引用[1]提到了Hugging Face的链接,因此我们可以推测该模型同样位于Hugging Face上。 实际上,在之前的对话中已经给出了该模型的Hugging Face链接:https://huggingface.co/IDEA-CCNL/Ziya-BART-ES-Social 因此,我们可以直接提供这个链接作为下载地址。同时,用户可以通过Hugging Face的`transformers`库直接使用模型名称加载,无需手动下载(但库会自动下载)。 如果用户需要手动下载模型文件(例如,为了离线使用),则可以通过该模型卡片页面上的“Files and versions”选项卡下载所有文件。 另外,引用[3]提到了一个GitHub仓库(Fengshenbang-LM),但该仓库是封神榜框架的代码仓库,不是模型下载地址。 因此,回答如下: </think> 基于您提供的引用信息,我确认了IDEA-CCNL/Ziya-BART-ES-Social模型的官方下载途径: ### 模型下载途径 1. **Hugging Face模型库(推荐)** 官方模型卡片地址: [https://huggingface.co/IDEA-CCNL/Ziya-BART-ES-Social](https://huggingface.co/IDEA-CCNL/Ziya-BART-ES-Social) 支持两种下载方式: - **Python自动下载**(使用transformers库): ```python from transformers import BartForConditionalGeneration, AutoTokenizer model = BartForConditionalGeneration.from_pretrained("IDEA-CCNL/Ziya-BART-ES-Social") tokenizer = AutoTokenizer.from_pretrained("IDEA-CCNL/Ziya-BART-ES-Social") ``` - **手动下载**:在模型页面的"Files and versions"标签页下载所有文件 2. **封神榜框架集成** 通过官方GitHub仓库安装(引用[3]): ```bash git clone https://github.com/IDEA-CCNL/Fengshenbang-LM.git cd Fengshenbang-LM pip install --editable ./ ``` 然后在Python中调用: ```python from fengshen.models.ziya_bart import ZiyaBartForConditionalGeneration model = ZiyaBartForConditionalGeneration.from_pretrained("IDEA-CCNL/Ziya-BART-ES-Social") ``` ### 本地缓存配置(引用[4]) 若需指定下载目录,添加`cache_dir`参数: ```python model = BartForConditionalGeneration.from_pretrained( "IDEA-CCNL/Ziya-BART-ES-Social", cache_dir="D:/my_models" # 自定义本地路径 ) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值