Submission #26392

#TimeUsernameProblemLanguageResultExecution timeMemory
26392samir_droubiPipes (BOI13_pipes)C++14
37.59 / 100
1000 ms107952 KiB
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int mxn=(1e5)+5;
long long c[mxn];
queue<int>q;
set<pair<int,int> >gr[mxn];

set<int>tr[mxn];
int ans[mxn*5];
bool vis[mxn];

bool ok=true;
void dfs(int v)
{
	vis[v]=true;
	set<int>::iterator it=tr[v].begin();
	for(it;it!=tr[v].end();++it)
	{
		int u=*it;
		if(vis[u])ok=false;
		else dfs(u);
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i)
		scanf("%d",&c[i]);
	for(int i=1;i<=m;++i)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		gr[x].insert({y,i});
		gr[y].insert({x,i});
		tr[x].insert(y);
		tr[y].insert(x);
	}
	for(int i=1;i<=n;++i)
	{
		set<int>::iterator it=tr[i].begin();
		for(it;it!=tr[i].end();++it)
		{
			int u=*it;
			set<int>::iterator it1=tr[u].begin();
			for(it1;it1!=tr[u].end();++it1)
			{
				int w=*it1;
				if(w==i)continue;
				if(tr[i].count(w))
				{
					tr[i].clear();
					tr[w].clear();
					tr[u].clear();
				}
			}
		}
	}
	for(int i=1;i<=n;++i)
	{
		if(!vis[i])
			dfs(i);
	}
	if(!ok)
	{
		puts("0");
		return 0;
	}
	return 0;
	for(int i=1;i<=n;++i)
		if(gr[i].size()==1)q.push(i);
	while(!q.empty())
	{
		int v=q.front();
		q.pop();
		if(gr[v].empty())continue;

		int u=gr[v].begin()->first;
		int in=gr[v].begin()->second;

		gr[u].erase({v,in});
		if(gr[u].size()==1)q.push(u);
		ans[in]=2*c[v];
		c[u]-=c[v];
	}
	for(int i=1;i<=m;++i)printf("%d\n",ans[i]);
	return 0;
}

Compilation message (stderr)

pipes.cpp: In function 'void dfs(int)':
pipes.cpp:18:8: warning: statement has no effect [-Wunused-value]
  for(it;it!=tr[v].end();++it)
        ^
pipes.cpp: In function 'int main()':
pipes.cpp:29:19: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
   scanf("%d",&c[i]);
                   ^
pipes.cpp:42:9: warning: statement has no effect [-Wunused-value]
   for(it;it!=tr[i].end();++it)
         ^
pipes.cpp:46:11: warning: statement has no effect [-Wunused-value]
    for(it1;it1!=tr[u].end();++it1)
           ^
pipes.cpp:27:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m);
                     ^
pipes.cpp:29:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&c[i]);
                    ^
pipes.cpp:33:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&x,&y);
                      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...